if CURR_STATE_COMPARE(gl_vertex_array_enabled, index, GL_TRUE) {
IF_GL_SUCCESS(_orig_fastpath_glEnableVertexAttribArray(index)) {
- if (current_ctx->gl_vertex_array_binding[0] == 0) {
- current_ctx->_vattrib_flag |= _VATTRIB_FLAG_BIT_gl_vertex_array;
- CURR_STATE_UPDATE(gl_vertex_array_enabled, index, GL_TRUE)
- }
+ current_ctx->_vattrib_flag |= _VATTRIB_FLAG_BIT_gl_vertex_array;
+ CURR_STATE_UPDATE(gl_vertex_array_enabled, index, GL_TRUE)
}
}
if CURR_STATE_COMPARE(gl_vertex_array_enabled, index, GL_FALSE) {
IF_GL_SUCCESS(_orig_fastpath_glDisableVertexAttribArray(index)) {
- if (current_ctx->gl_vertex_array_binding[0] == 0) {
- current_ctx->_vattrib_flag |= _VATTRIB_FLAG_BIT_gl_vertex_array;
- CURR_STATE_UPDATE(gl_vertex_array_enabled, index, GL_FALSE)
- }
+ current_ctx->_vattrib_flag |= _VATTRIB_FLAG_BIT_gl_vertex_array;
+ CURR_STATE_UPDATE(gl_vertex_array_enabled, index, GL_FALSE)
}
}
_COREGL_FASTPATH_FUNC_END();
}
-
void
fastpath_glFrontFace(GLenum mode)
{
fastpath_glBindVertexArray(GLuint array)
{
GLuint real_obj;
+ int i;
DEFINE_FASTPAH_GL_FUNC();
_COREGL_FASTPATH_FUNC_BEGIN();
goto finish;
}
- if (CURR_STATE_COMPARE(gl_vertex_array_binding, 0, real_obj)) {
+ if(real_obj == 0) {
+ IF_GL_SUCCESS(_orig_fastpath_glBindVertexArray(real_obj)) {
+ current_ctx->_misc_flag3 &= ~(_MISC_FLAG3_BIT_gl_vertex_array_binding);
+ CURR_STATE_CLEAR(gl_vertex_array_binding, 0)
+ for(i = 0; i < current_ctx->gl_vertex_attribs_num[0]; i++)
+ CURR_STATE_CLEAR(gl_vertex_array_enabled, i)
+ }
+ }
+ else if (CURR_STATE_COMPARE(gl_vertex_array_binding, 0, real_obj)) {
IF_GL_SUCCESS(_orig_fastpath_glBindVertexArray(real_obj)) {
current_ctx->_misc_flag3 |= _MISC_FLAG3_BIT_gl_vertex_array_binding;
CURR_STATE_UPDATE(gl_vertex_array_binding, 0, real_obj)
+ for(i = 0; i < current_ctx->gl_vertex_attribs_num[0]; i++)
+ CURR_STATE_CLEAR(gl_vertex_array_enabled, i)
}
}
goto finish;
_COREGL_FASTPATH_FUNC_END();
}
-
void
fastpath_glBindVertexArrayOES(GLuint array)
{
GLuint real_obj;
+ int i;
DEFINE_FASTPAH_GL_FUNC();
_COREGL_FASTPATH_FUNC_BEGIN();
_set_gl_error(GL_INVALID_OPERATION);
goto finish;
}
- if (CURR_STATE_COMPARE(gl_vertex_array_binding, 0, real_obj)) {
+
+ if(real_obj == 0) {
+ IF_GL_SUCCESS(_orig_fastpath_glBindVertexArrayOES(real_obj)) {
+ current_ctx->_misc_flag3 &= ~(_MISC_FLAG3_BIT_gl_vertex_array_binding);
+ CURR_STATE_CLEAR(gl_vertex_array_binding, 0)
+ for(i = 0; i < current_ctx->gl_vertex_attribs_num[0]; i++)
+ CURR_STATE_CLEAR(gl_vertex_array_enabled, i)
+ }
+ }
+ else if (CURR_STATE_COMPARE(gl_vertex_array_binding, 0, real_obj)) {
IF_GL_SUCCESS(_orig_fastpath_glBindVertexArrayOES(real_obj)) {
current_ctx->_misc_flag3 |= _MISC_FLAG3_BIT_gl_vertex_array_binding;
CURR_STATE_UPDATE(gl_vertex_array_binding, 0, real_obj)
+ for(i = 0; i < current_ctx->gl_vertex_attribs_num[0]; i++)
+ CURR_STATE_CLEAR(gl_vertex_array_enabled, i)
}
}
goto finish;
_COREGL_FASTPATH_FUNC_END();
}
-
GLboolean
fastpath_glIsVertexArrayOES(GLuint array)
{