Для моих последних нескольких проектов я использовал некоторые файлы утилит, которые я нашел, просматривая несколько демонстраций здесь .
А именно файл с именем opengl.h - в основном используется для управления шейдерами, похожими на glew, и другим файлом gl_font.
gl_font - это класс, который они используют для визуализации шрифтов на экране, используя объекты буфера вершин.
Однако, когда я использую это для рендеринга частоты кадров в моей игре, он правильно рисует все, кроме скайбокса. По какой-то причине скайбокс отображается белым, как видно здесь , если я не отображаю шрифт, он выглядит как 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(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();
}
Это - изображение буфера глубины, когда визуализируется шрифт, а это - это то, что выглядит, когда его нет.
Может кто-нибудь пролить свет на эту проблему, пожалуйста?
Любая помощь будет принята с благодарностью!
Спасибо.