void GLEScmContext::convertArrs(GLESFloatArrays& fArrs,GLint first,GLsizei count,GLenum type,const GLvoid* indices,bool direct) { ArraysMap::iterator it; unsigned int index = 0; m_pointsIndex = -1; //going over all clients arrays Pointers for ( it=m_map.begin() ; it != m_map.end(); it++ ) { GLenum array_id = (*it).first; GLESpointer* p = (*it).second; if(array_id == GL_TEXTURE_COORD_ARRAY) continue; //handling textures later chooseConvertMethod(fArrs,first,count,type,indices,direct,p,array_id,index); } unsigned int activeTexture = m_clientActiveTexture + GL_TEXTURE0; s_lock.lock(); int maxTexUnits = s_glSupport.maxTexUnits; s_lock.unlock(); //converting all texture coords arrays for(int i=0; i< maxTexUnits;i++) { unsigned int tex = GL_TEXTURE0+i; setClientActiveTexture(tex); s_glDispatch.glClientActiveTexture(tex); GLenum array_id = GL_TEXTURE_COORD_ARRAY; GLESpointer* p = m_map[array_id]; chooseConvertMethod(fArrs,first,count,type,indices,direct,p,array_id,index); } setClientActiveTexture(activeTexture); s_glDispatch.glClientActiveTexture(activeTexture); }
void COpenGLCacheHandler::setClientState(bool vertex, bool normal, bool color, bool texCoord0) { if (ClientStateVertex != vertex) { if (vertex) glEnableClientState(GL_VERTEX_ARRAY); else glDisableClientState(GL_VERTEX_ARRAY); ClientStateVertex = vertex; } if (ClientStateNormal != normal) { if (normal) glEnableClientState(GL_NORMAL_ARRAY); else glDisableClientState(GL_NORMAL_ARRAY); ClientStateNormal = normal; } if (ClientStateColor != color) { if (color) glEnableClientState(GL_COLOR_ARRAY); else glDisableClientState(GL_COLOR_ARRAY); ClientStateColor = color; } if (ClientStateTexCoord0 != texCoord0) { setClientActiveTexture(GL_TEXTURE0_ARB); if (texCoord0) glEnableClientState(GL_TEXTURE_COORD_ARRAY); else glDisableClientState(GL_TEXTURE_COORD_ARRAY); ClientStateTexCoord0 = texCoord0; } }