1
0
forked from mirrors/0ad

Remove duplicated call in tile rendering for TerrainOverlay.

Patch By: vinhig
Reviewed By: wraitii
Differential Revision: https://code.wildfiregames.com/D2811
This was SVN commit r23767.
This commit is contained in:
vladislavbelov
2020-06-12 20:52:18 +00:00
parent fd8a47f5d9
commit 6f70a901f8
2 changed files with 22 additions and 17 deletions
@@ -246,6 +246,7 @@
{ "nick": "user1", "name": "A. C." },
{ "nick": "usey11" },
{ "nick": "vincent_c", "name": "Vincent Cheng" },
{ "nick": "vinhig", "name": "Vincent Higginson" },
{ "nick": "vladislavbelov", "name": "Vladislav Belov" },
{ "nick": "voroskoi" },
{ "nick": "vts", "name": "Jeroen DR" },
+21 -17
View File
@@ -1,4 +1,4 @@
/* Copyright (C) 2019 Wildfire Games.
/* Copyright (C) 2020 Wildfire Games.
* This file is part of 0 A.D.
*
* 0 A.D. is free software: you can redistribute it and/or modify
@@ -163,9 +163,9 @@ void TerrainOverlay::RenderTile(const CColor& color, bool draw_hidden)
void TerrainOverlay::RenderTile(const CColor& color, bool draw_hidden, ssize_t i, ssize_t j)
{
// TODO: if this is unpleasantly slow, make it much more efficient
// (e.g. buffering data and making a single draw call? or at least
// far fewer calls than it makes now)
// TODO: unnecessary computation calls has been removed but we should use
// a vertex buffer or a vertex shader with a texture.
// Not sure if it's possible on old OpenGL.
if (draw_hidden)
{
@@ -184,28 +184,32 @@ void TerrainOverlay::RenderTile(const CColor& color, bool draw_hidden, ssize_t i
glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
CVector3D pos;
CVector3D pos[2][2];
for (int di = 0; di < 2; ++di)
for (int dj = 0; dj < 2; ++dj)
m_Terrain->CalcPosition(i + di, j + dj, pos[di][dj]);
glBegin(GL_TRIANGLES);
glColor4fv(color.FloatArray());
if (m_Terrain->GetTriangulationDir(i, j))
{
m_Terrain->CalcPosition(i, j, pos); glVertex3fv(pos.GetFloatArray());
m_Terrain->CalcPosition(i+1, j, pos); glVertex3fv(pos.GetFloatArray());
m_Terrain->CalcPosition(i, j+1, pos); glVertex3fv(pos.GetFloatArray());
glVertex3fv(pos[0][0].GetFloatArray());
glVertex3fv(pos[1][0].GetFloatArray());
glVertex3fv(pos[0][1].GetFloatArray());
m_Terrain->CalcPosition(i+1, j, pos); glVertex3fv(pos.GetFloatArray());
m_Terrain->CalcPosition(i+1, j+1, pos); glVertex3fv(pos.GetFloatArray());
m_Terrain->CalcPosition(i, j+1, pos); glVertex3fv(pos.GetFloatArray());
glVertex3fv(pos[1][0].GetFloatArray());
glVertex3fv(pos[1][1].GetFloatArray());
glVertex3fv(pos[0][1].GetFloatArray());
}
else
{
m_Terrain->CalcPosition(i, j, pos); glVertex3fv(pos.GetFloatArray());
m_Terrain->CalcPosition(i+1, j, pos); glVertex3fv(pos.GetFloatArray());
m_Terrain->CalcPosition(i+1, j+1, pos); glVertex3fv(pos.GetFloatArray());
glVertex3fv(pos[0][0].GetFloatArray());
glVertex3fv(pos[1][0].GetFloatArray());
glVertex3fv(pos[1][1].GetFloatArray());
m_Terrain->CalcPosition(i+1, j+1, pos); glVertex3fv(pos.GetFloatArray());
m_Terrain->CalcPosition(i, j+1, pos); glVertex3fv(pos.GetFloatArray());
m_Terrain->CalcPosition(i, j, pos); glVertex3fv(pos.GetFloatArray());
glVertex3fv(pos[1][1].GetFloatArray());
glVertex3fv(pos[0][1].GetFloatArray());
glVertex3fv(pos[0][0].GetFloatArray());
}
glEnd();