Question

Pour mes derniers projets que j'ai utilisé certains des fichiers utilitaires que je trouve tout en regardant quelques démos ici .

A savoir un fichier appelé opengl.h -. Utilisé principalement pour gérer les shaders un peu comme Glew et un autre gl_font de fichier

gl_font est une classe qu'ils utilisent pour rendre les polices à l'écran en utilisant des objets vertex buffer.

Cependant, quand je l'utiliser pour rendre le framerate dans mon jeu, il tire tout, mais le skybox correctement. Pour une raison quelconque le skybox est rendu blanc comme vu , si je ne rends pas la police il ressemble à cette .

Voici quelques parties de la classe gl_font qui me semblent le plus important:

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();
}

Je glPushAttrib(GL_CURRENT_BIT | GL_LIGHTING_BIT); à changer Trie glPushAttrib (GL_CURRENT_BIT | GL_LIGHTING_BIT | GL_TEXTURE_BIT); et le rendement de la texture de fond, mais la police ne sont pas rendus.

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();
}

Cette est une image de la mémoire tampon de profondeur lorsque la police de caractères est rendu et ce est ce qui est ressemble à quand il est pas.

Quelqu'un pourrait-il faire la lumière sur ce problème s'il vous plaît?

Toute aide serait grandement appréciée!

Merci.

Était-ce utile?

La solution

On dirait que begin() manque un glPushMatrix() après glMatrixMode(GL_MODELVIEW). Cela pourrait provoquer la scène à rendre de manière incorrecte lorsque du texte est également rendu.

N'a pas glGetError() signaler une erreur GL_STACK_UNDERFLOW?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top