gl::Error StateManagerGL::setDrawElementsState(const gl::Data &data, GLsizei count, GLenum type, const GLvoid *indices, GLsizei instanceCount, const GLvoid **outIndices) { const gl::State &state = *data.state; const gl::Program *program = state.getProgram(); const gl::VertexArray *vao = state.getVertexArray(); const VertexArrayGL *vaoGL = GetImplAs<VertexArrayGL>(vao); gl::Error error = vaoGL->syncDrawElementsState(program->getActiveAttribLocationsMask(), count, type, indices, instanceCount, state.isPrimitiveRestartEnabled(), outIndices); if (error.isError()) { return error; } bindVertexArray(vaoGL->getVertexArrayID(), vaoGL->getAppliedElementArrayBufferID()); return setGenericDrawState(data); }
gl::Error StateManagerGL::setDrawArraysState(const gl::Data &data, GLint first, GLsizei count) { const gl::State &state = *data.state; const gl::VertexArray *vao = state.getVertexArray(); const VertexArrayGL *vaoGL = GetImplAs<VertexArrayGL>(vao); vaoGL->syncDrawArraysState(first, count); bindVertexArray(vaoGL->getVertexArrayID()); return setGenericDrawState(data); }
gl::Error StateManagerGL::setDrawElementsState(const gl::Data &data, GLsizei count, GLenum type, const GLvoid *indices, const GLvoid **outIndices) { const gl::State &state = *data.state; const gl::VertexArray *vao = state.getVertexArray(); const VertexArrayGL *vaoGL = GetImplAs<VertexArrayGL>(vao); gl::Error error = vaoGL->syncDrawElementsState(count, type, indices, outIndices); if (error.isError()) { return error; } bindVertexArray(vaoGL->getVertexArrayID()); return setGenericDrawState(data); }
gl::Error StateManagerGL::setDrawArraysState(const gl::Data &data, GLint first, GLsizei count, GLsizei instanceCount) { const gl::State &state = *data.state; const gl::Program *program = state.getProgram(); const gl::VertexArray *vao = state.getVertexArray(); const VertexArrayGL *vaoGL = GetImplAs<VertexArrayGL>(vao); gl::Error error = vaoGL->syncDrawArraysState(program->getActiveAttribLocationsMask(), first, count, instanceCount); if (error.isError()) { return error; } bindVertexArray(vaoGL->getVertexArrayID(), vaoGL->getAppliedElementArrayBufferID()); return setGenericDrawState(data); }