Fixing a bug introduced with multiple vertex stream support for OGL backend. (#1072)

This commit is contained in:
Dario Manesku
2017-03-11 22:26:53 +01:00
committed by Branimir Karadžić
parent dd244f8de4
commit 72d98681bb

View File

@@ -7123,7 +7123,6 @@ namespace bgfx { namespace gl
for (size_t ii = 0; ii < BGFX_CONFIG_MAX_VERTEX_STREAMS; ++ii)
{
currentState.m_stream[ii].m_handle.idx = invalidHandle;
currentState.m_stream[ii].m_startVertex = 0;
}
currentState.m_indexBuffer.idx = invalidHandle;
bindAttribs = true;
@@ -7166,8 +7165,17 @@ namespace bgfx { namespace gl
streamMask >>= ntz;
idx += ntz;
currentState.m_stream[idx].m_handle = draw.m_stream[idx].m_handle;
currentState.m_stream[idx].m_startVertex = draw.m_stream[idx].m_startVertex;
uint16_t handle = draw.m_stream[idx].m_handle.idx;
if (invalidHandle != handle)
{
VertexBufferGL& vb = m_vertexBuffers[handle];
GL_CHECK(glBindBuffer(GL_ARRAY_BUFFER, vb.m_id) );
bindAttribs = true;
}
else
{
GL_CHECK(glBindBuffer(GL_ARRAY_BUFFER, 0) );
}
}
}
@@ -7216,12 +7224,9 @@ namespace bgfx { namespace gl
streamMask >>= ntz;
idx += ntz;
const Stream& stream = draw.m_stream[idx];
const VertexBufferGL& vb = m_vertexBuffers[stream.m_handle.idx];
uint16_t decl = !isValid(vb.m_decl) ? stream.m_decl.idx : vb.m_decl.idx;
GL_CHECK(glBindBuffer(GL_ARRAY_BUFFER, vb.m_id) );
program.bindAttributes(m_vertexDecls[decl], stream.m_startVertex);
const VertexBufferGL& vb = m_vertexBuffers[draw.m_stream[idx].m_handle.idx];
uint16_t decl = !isValid(vb.m_decl) ? draw.m_stream[idx].m_decl.idx : vb.m_decl.idx;
program.bindAttributes(m_vertexDecls[decl], draw.m_stream[idx].m_startVertex);
}
program.bindAttributesEnd();
@@ -7247,10 +7252,8 @@ namespace bgfx { namespace gl
streamMask >>= ntz;
idx += ntz;
const Stream& stream = currentState.m_stream[idx];
const VertexBufferGL& vb = m_vertexBuffers[stream.m_handle.idx];
uint16_t decl = !isValid(vb.m_decl) ? stream.m_decl.idx : vb.m_decl.idx;
const VertexBufferGL& vb = m_vertexBuffers[currentState.m_stream[idx].m_handle.idx];
uint16_t decl = !isValid(vb.m_decl) ? draw.m_stream[idx].m_decl.idx : vb.m_decl.idx;
const VertexDecl& vertexDecl = m_vertexDecls[decl];
numVertices = bx::uint32_min(numVertices, vb.m_size/vertexDecl.m_stride);