forked from 0ad/0ad
Fixes fancy waves build on GLES (replaces GL_QUADS with GL_TRIANGLES)
This was SVN commit r14151.
This commit is contained in:
parent
81eabfc934
commit
f1613a3c90
@ -789,12 +789,10 @@ bool TerrainRenderer::RenderFancyWater(const CShaderDefines& context, ShadowMap*
|
||||
m->wavesShader->VertexPointer(3, GL_FLOAT, stride, &base[WaterMgr->m_VBWaves->m_Index].m_Position);
|
||||
m->wavesShader->TexCoordPointer(GL_TEXTURE0,2,GL_BYTE, stride,&base[WaterMgr->m_VBWaves->m_Index].m_UV);
|
||||
m->wavesShader->AssertPointersBound();
|
||||
|
||||
u8* indexBase = WaterMgr->m_VBWavesIndices->m_Owner->Bind();
|
||||
#if CONFIG2_GLES
|
||||
#warning TODO: fix TerrainRenderer::RenderFancyWater for GLES (avoid GL_QUADS)
|
||||
#else
|
||||
glDrawElements(GL_QUADS, (GLsizei) WaterMgr->m_VBWavesIndices->m_Count, GL_UNSIGNED_SHORT, indexBase + sizeof(u16)*(WaterMgr->m_VBWavesIndices->m_Index));
|
||||
#endif
|
||||
glDrawElements(GL_TRIANGLES, (GLsizei) WaterMgr->m_VBWavesIndices->m_Count, GL_UNSIGNED_SHORT, indexBase + sizeof(u16)*(WaterMgr->m_VBWavesIndices->m_Index));
|
||||
|
||||
g_Renderer.m_Stats.m_DrawCalls++;
|
||||
CVertexBuffer::Unbind();
|
||||
m->wavesShader->Unbind();
|
||||
|
@ -549,39 +549,47 @@ void WaterManager::CreateSuperfancyInfo(CSimulation2* simulation)
|
||||
perp = perp.Normalized();
|
||||
avgnorm = avgnorm.Normalized();
|
||||
|
||||
GLushort index[4];
|
||||
SWavesVertex vertex[4];
|
||||
vertex[0].m_Position = CVector3D(pos.X + perp.X*(size/2.2f) - avgnorm[0]*1.0f, 0.0f,pos.Y + perp.Y*(size/2.2f) - avgnorm[2]*1.0f);
|
||||
vertex[0].m_Position *= 4.0f;
|
||||
vertex[0].m_Position.Y = m_WaterHeight + 1.0f;
|
||||
vertex[0].m_UV[1] = 1;
|
||||
vertex[0].m_UV[0] = 0;
|
||||
index[0] = waves_vertex_data.size();
|
||||
waves_vertex_data.push_back(vertex[0]);
|
||||
|
||||
vertex[1].m_Position = CVector3D(pos.X - perp.X*(size/2.2f) - avgnorm[0]*1.0f, 0.0f,pos.Y - perp.Y*(size/2.2f) - avgnorm[2]*1.0f);
|
||||
vertex[1].m_Position *= 4.0f;
|
||||
vertex[1].m_Position.Y = m_WaterHeight + 1.0f;
|
||||
vertex[1].m_UV[1] = 1;
|
||||
vertex[1].m_UV[0] = 1;
|
||||
index[1] = waves_vertex_data.size();
|
||||
waves_vertex_data.push_back(vertex[1]);
|
||||
|
||||
vertex[3].m_Position = CVector3D(pos.X + perp.X*(size/2.2f) + avgnorm[0]*(size/1.5f), 0.0f,pos.Y + perp.Y*(size/2.2f) + avgnorm[2]*(size/1.5f));
|
||||
vertex[3].m_Position *= 4.0f;
|
||||
vertex[3].m_Position.Y = m_WaterHeight + 1.0f;
|
||||
vertex[3].m_UV[1] = 0;
|
||||
vertex[3].m_UV[0] = 0;
|
||||
index[3] = waves_vertex_data.size();
|
||||
waves_vertex_data.push_back(vertex[3]);
|
||||
|
||||
vertex[2].m_Position = CVector3D(pos.X - perp.X*(size/2.2f) + avgnorm[0]*(size/1.5f), 0.0f,pos.Y - perp.Y*(size/2.2f) + avgnorm[2]*(size/1.5f));
|
||||
vertex[2].m_Position *= 4.0f;
|
||||
vertex[2].m_Position.Y = m_WaterHeight + 1.0f;
|
||||
vertex[2].m_UV[1] = 0;
|
||||
vertex[2].m_UV[0] = 1;
|
||||
|
||||
waves_indices.push_back(waves_vertex_data.size());
|
||||
waves_vertex_data.push_back(vertex[0]);
|
||||
waves_indices.push_back(waves_vertex_data.size());
|
||||
waves_vertex_data.push_back(vertex[1]);
|
||||
waves_indices.push_back(waves_vertex_data.size());
|
||||
index[2] = waves_vertex_data.size();
|
||||
waves_vertex_data.push_back(vertex[2]);
|
||||
waves_indices.push_back(waves_vertex_data.size());
|
||||
waves_vertex_data.push_back(vertex[3]);
|
||||
|
||||
waves_indices.push_back(index[0]);
|
||||
waves_indices.push_back(index[1]);
|
||||
waves_indices.push_back(index[2]);
|
||||
|
||||
waves_indices.push_back(index[2]);
|
||||
waves_indices.push_back(index[3]);
|
||||
waves_indices.push_back(index[0]);
|
||||
}
|
||||
|
||||
// no vertex buffers if no data generated
|
||||
|
Loading…
Reference in New Issue
Block a user