Domanda

Per i miei ultimi progetti ho utilizzato alcuni dei file di utilità che ho trovato mentre guardando alcuni demo qui .

Vale a dire un file chiamato opengl.h -. Prevalentemente utilizzato per gestire shader un po 'come Glew e un altro file gl_font

gl_font è una classe che utilizzano per il rendering dei caratteri sullo schermo utilizzando oggetti buffer vertice.

Tuttavia, quando uso questo per rendere il framerate nel mio gioco trae tutto, ma lo skybox correttamente. Per qualche motivo lo skybox è reso bianco come si è visto qui , se non rendere il carattere sembra questo .

Qui ci sono alcune parti della classe gl_font che ritengo più importante:

void GLFont::begin()
{
    HWND hWnd = GetForegroundWindow();
    RECT rcClient;

    GetClientRect(hWnd, &rcClient);

    int w = rcClient.right - rcClient.left;
    int h = rcClient.bottom - rcClient.top;

    glPushAttrib(GL_CURRENT_BIT | GL_LIGHTING_BIT);

    glDisable(GL_LIGHTING);

    glEnable(GL_BLEND);
    glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);

    glEnable(GL_TEXTURE_2D);
    glBindTexture(GL_TEXTURE_2D, m_fontTexture);

    glMatrixMode(GL_PROJECTION);
    glPushMatrix();
    glLoadIdentity();
    glOrtho(0.0f, w, h, 0.0f, -1.0f, 1.0f);

    glMatrixMode(GL_MODELVIEW);
    glLoadIdentity();

    glBindBuffer(GL_ARRAY_BUFFER, m_vertexBuffer);

    drawTextBegin();
}

Non ho trie cambiando glPushAttrib(GL_CURRENT_BIT | GL_LIGHTING_BIT); a glPushAttrib (GL_CURRENT_BIT | GL_LIGHTING_BIT | GL_TEXTURE_BIT); ei rendimenti texture di sfondo, ma il tipo di carattere non è resi.

void GLFont::end()
{
    drawTextEnd();

    glBindBuffer(GL_ARRAY_BUFFER, 0);

    glBindTexture(GL_TEXTURE_2D, 0);
    glDisable(GL_TEXTURE_2D);

    glDisable(GL_BLEND);

    glMatrixMode(GL_PROJECTION);
    glPopMatrix();

    glMatrixMode(GL_MODELVIEW);
    glPopMatrix();

    glPopAttrib();
}

Questa è un'immagine del buffer di profondità quando il carattere è stato reso e questo è ciò che è appare come quando non lo è.

Qualcuno potrebbe fare luce su questo problema per favore?

Qualsiasi aiuto sarebbe molto apprezzato!

Grazie.

È stato utile?

Soluzione

appare come begin() manca un glPushMatrix() dopo glMatrixMode(GL_MODELVIEW). Ciò potrebbe causare la scena per eseguire il rendering in modo non corretto quando un testo viene anche reso.

Non glGetError() segnalare un errore di GL_STACK_UNDERFLOW?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top