Текст отображается неправильно, каждый символ представляет собой белый прямоугольник

Я хотел отобразить текст в своем приложении OpenGL и уже использовал SFML для окна & создание контекста. Я не хотел добавлять другую библиотеку и пытался использовать рендеринг текста, предоставляемый SFML (2.0).

Текст, который отображается, состоит из белых прямоугольников (прямоугольники соответствуют высоте символа, который они должны приблизительно отображать).

Все остальное отображается правильно после того, как я добавил несколько методов, чтобы сохранить состояния OpenGL такими же, какими они были до использования текста SFML. Без этих методов ничего не визуализируется, но используется правильный цвет очистки буфера цвета.

Я использую GLSL для текстурирования и освещения (могу предоставить источник&скриншоты при необходимости).

Код, который я использую:

glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );
glLoadIdentity();

//rotations for looking around & moving the camera
glRotatef(camera.rotation[0], 1.0f, 0.0f, 0.0f);
glRotatef(camera.rotation[1], 0.0f, 1.0f, 0.0f);
glRotatef(camera.rotation[2], 0.0f, 0.0f, 1.0f);
glTranslatef( -5.0f+camera.translation[0],
camera.translation[1], -7.5f+camera.translation[2]);

//set OpenGL light attributes
passPosition(GL_LIGHT0, spotLight);
passSpotDirection(GL_LIGHT0, spotLight);
passPosition(GL_LIGHT1, greenLight);
passPosition(GL_LIGHT2, redLight);
passPosition(GL_LIGHT3, blueLight);

glUseProgram( shaderProg.getId() );
renderMap();
glUseProgram(0);

window.pushGLStates();//supposed to prevent OpenGL & SFML conflicts
window.draw(testText);
window.popGLStates();

err = glGetError();//doesn't report any errors
if(err != GL_NO_ERROR)
{
std::cout << "ERROR: " << err << std::endl;
}

window.display();

Текстовый экземпляр создается так:

sf::Font fontVera;

std::cout << fontVera.loadFromFile("./res/Vera.ttf") << std::endl;
//the font is existing, output for debugging purposes(and shows no error)

sf::Text testText("hasdfas", fontVera, 32);
testText.setPosition(10,10);

Я использую 3,3 контекста профиля совместимости, 3,3 GLSL и 2,0 SFML (скомпилировано из исходного кода).

0

Решение

Я переключил мой рендеринг шрифтов на ftgl, так как я не нашел способа исправить ошибку рендеринга из SFML.

Я сомневаюсь, что я вернусь назад, потому что конфликты состояния SFML-OpenGL, кажется, довольно широко распространены:

StackOverflow: SFML OpenGL чертежный текст

SFML-Forums: сумасшедшая ошибка с использованием освещения OpenGL и RenderWindow

SFML-форумы: glCullFace делает SFML слепым

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]