私の最後のいくつかのプロジェクトでは、いくつかのデモを見ている間に発見されたユーティリティファイルのいくつかを使用していましたhere。OpenGLデプスバッファ問題
つまり、主にglewのようなシェーダと別のファイルgl_fontを管理するために使用されるopengl.hというファイルです。
gl_fontは、頂点バッファオブジェクトを使用して画面上にフォントをレンダリングするために使用するクラスです。
しかし、これを使用して私のゲームでフレームレートをレンダリングすると、スカイボックス以外のすべてが正しく描画されます。何らかの理由でskyboxがhereのように白くレンダリングされます。フォントをレンダリングしないと、thisのようになります。
ここは、私が最も重要だと思うgl_fontクラスの一部です:
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();
}
私がトライglPushAttribにglPushAttrib(GL_CURRENT_BIT | GL_LIGHTING_BIT);
を変更している(GL_CURRENT_BIT | GL_LIGHTING_BIT | GL_TEXTURE_BIT)。背景テクスチャは返されますが、フォントはレンダリングされません。
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();
}
Thisは、フォントがレンダリングされるときにデプスバッファの画像であり、thisはそれがないときにどのように見えるかです。
誰でもこの問題を軽視してください。
ご協力いただければ幸いです。
ありがとうございました。
私はテキストを最後にレンダリングしているので、プッシュマトリックスは問題ではありませんか? – henryprescott
神はDirect3Dを祝福します。 – Puppy
フレームごとにモデルビューを最初から作成するかどうかによって異なります。とにかく: 'GL_LIGHTING_BIT'を' glPopMatrix'にも含めて、最後にテキストを描画すると、それはデプステストに合格していますか?あなたはテキストのレンダリングのためにGL_DEPTH_TESTを無効にしようとしましたか? – Kos