Я только начал работать с OpenGL, но столкнулся с проблемой после внедрения системы шрифтов.
Я планирую просто визуализировать несколько алгоритмов поиска пути.
В настоящее время OpenGL настраивается каквот это (OnSize вызывается один раз при создании окна вручную):
void GLWindow::OnSize(GLsizei width, GLsizei height)
{
// set size
glViewport(0,0,width,height);
// orthographic projection
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(0.0,width,height,0.0,-1.0,1.0);
glMatrixMode(GL_MODELVIEW);
m_uiWidth = width;
m_uiHeight = height;
}
void GLWindow::InitGL()
{
// enable 2D texturing
glEnable(GL_TEXTURE_2D);
// choose a smooth shading model
glShadeModel(GL_SMOOTH);
// set the clear color to black
glClearColor(0.0, 0.0, 0.0, 0.0);
glEnable(GL_ALPHA_TEST);
glAlphaFunc(GL_GREATER, 0.0f);
}
Теоретически мне не нужно смешивать, потому что я буду использовать только нетекстурированные квадраты для визуализации препятствий, линий и т. д., чтобы рисовать пути ...все будет неструктурировано, кроме шрифтов ...
Класс Font имеет функцию push и pop, которая выглядит следующим образом (если я правильно помню, моя система шрифтов основана на NeHe Tutorial, которому я следовал довольноНекоторое время назад):
inline void GLFont::pushScreenMatrix()
{
glPushAttrib(GL_TRANSFORM_BIT);
GLint viewport[4];
glGetIntegerv(GL_VIEWPORT, viewport);
glMatrixMode(GL_PROJECTION);
glPushMatrix();
glLoadIdentity();
glOrtho(viewport[0],viewport[2],viewport[1],viewport[3], -1.0, 1.0);
glPopAttrib();
}
inline void GLFont::popProjectionMatrix()
{
glPushAttrib(GL_TRANSFORM_BIT);
glMatrixMode(GL_PROJECTION);
glPopMatrix();
glPopAttrib();
}
Итак, проблема: если я не рисую текст, я вижу квады, которые я хочу нарисовать, но они довольно темные, так что, должно быть, что-то не так с моимобщие свойства матрицы OpenGL.Если я нарисую текст (чтобы вызывались связанные со шрифтом функции push и pop), я не вижу никаких квадов.
Вопрос: как мне решить эту проблему, и некоторая справочная информация, почему это произошло, было бы неплохо, потому что я все еще начинающий / студент, который только начал.