最近のいくつかのプロジェクトでは、ここでいくつかのデモを見ながら見つけたいくつかのユーティリティ ファイルを使用しています。
つまり、opengl.h と呼ばれるファイル - 主に glew と別のファイル gl_font のようなシェーダーを管理するために使用されます。
gl_font は、頂点バッファー オブジェクトを使用して画面にフォントをレンダリングするために使用するクラスです。
ただし、これを使用してゲームのフレームレートをレンダリングすると、スカイボックス以外のすべてが正しく描画されます。何らかの理由で、ここに示すようにスカイボックスが白くレンダリングされます。フォントをレンダリングしないと、このようになります。
私が最も重要だと思う 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(GL_CURRENT_BIT | GL_LIGHTING_BIT);
glPushAttrib(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();
}
これは、フォントがレンダリングされたときの深度バッファーのイメージであり、レンダリングされていないときの外観です。
誰でもこの問題に光を当てることができますか?
どんな助けでも大歓迎です!
ありがとう。