void RenderingThread::fixTextureEnable()
{
    // restore texture units enable state
    for (unsigned int i=0; i<m_backendCaps.maxTextureUnits; i++) {
        m_glActiveTexture(GL_TEXTURE0 + i);
        if (m_currentContext->isTex2DEnable(i)) {
            m_glEnable(GL_TEXTURE_2D);
        }
        else {
            m_glDisable(GL_TEXTURE_2D);
        }
        m_glClientActiveTexture(GL_TEXTURE0 + i);
        if (m_currentContext->getClientState(GL_TEXTURE_COORD_ARRAY, i)) {
            m_glEnableClientState(GL_TEXTURE_COORD_ARRAY);
        }
        else {
            m_glDisableClientState(GL_TEXTURE_COORD_ARRAY);
        }
    }
    // restore current active texture
    m_glActiveTexture(m_currentContext->getActiveTexture());
    m_glClientActiveTexture(m_currentContext->getClientActiveTexture());

    // restore other client state enable bits
    if (m_currentContext->getClientState(GL_VERTEX_ARRAY, 0)) {
        m_glEnableClientState(GL_VERTEX_ARRAY);
    }
    else {
        m_glDisableClientState(GL_VERTEX_ARRAY);
    }

    if (m_currentContext->getClientState(GL_NORMAL_ARRAY, 0)) {
        m_glEnableClientState(GL_NORMAL_ARRAY);
    }
    else {
        m_glDisableClientState(GL_NORMAL_ARRAY);
    }

    if (m_currentContext->getClientState(GL_COLOR_ARRAY, 0)) {
        m_glEnableClientState(GL_COLOR_ARRAY);
    }
    else {
        m_glDisableClientState(GL_COLOR_ARRAY);
    }

    if (m_currentContext->getClientState(GL_POINT_SIZE_ARRAY_OES, 0)) {
        m_glEnableClientState(GL_POINT_SIZE_ARRAY_OES);
    }
    else {
        m_glDisableClientState(GL_POINT_SIZE_ARRAY_OES);
    }
}
Beispiel #2
0
void UIOpenGLTextures::ActiveTexture(int ActiveTexture)
{
    if (m_activeTexture != ActiveTexture)
    {
        m_glActiveTexture(ActiveTexture);
        m_activeTexture = ActiveTexture;
    }
}