OpenGL 응용 프로그램에 일부 텍스트를 표시하고 문맥 작성시 & 창에 이미 SFML을 사용하고 있습니다. 나는 다른 라이브러리를 추가하고 싶지 않았고 SFML (2.0)이 제공 한 텍스트 렌더링을 사용해 보았습니다.텍스트가 잘못 렌더링됩니다. 각 문자는 흰색 직사각형입니다
렌더링되는 텍스트는 흰색 직사각형으로 구성됩니다 (직사각형은 대략 표시해야하는 문자의 높이와 일치합니다).
SFML 텍스트를 사용하기 전과 동일한 방법으로 OpenGL을 유지하는 몇 가지 메소드를 추가 한 후에는 다른 모든 것이 올바르게 렌더링됩니다. 이러한 메소드가 없으면 아무것도 렌더링되지 않지만 색상을 지우는 올바른 색상 버퍼가 사용됩니다.
텍스처링 및 조명을 위해 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();
텍스트 인스턴스는 다음과 같이 생성된다 : 3.3 호환성 (을) 프로필 컨텍스트, 3.3 GLSL 및 2.0 SFML을 사용하여
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);
I'am는 (소스에서 컴파일).
"I'am 3.3 호환성 (을)를 사용하여 :
나는 SFML - OpenGL은 상태 충돌이 매우 광범위한 것으로 보인다 때문에 내가 다시 전환됩니다 의심 Profile Context, 3.3 GLSL "당신은 *** 절대하지 말아야 할 *** ARB_shader_objects도 사용하고 있습니다. GLSL 3.30을받을 수 있다는 보장은 없습니다. 확장 기능이 아닌 코어 쉐이더 기능을 사용해야합니다. 나는 그것이 당신의 문제인지는 모르겠지만 결코 좋은 생각은 아닙니다. –
나는 ARB 기능을 대체했다, 문제는 아직도 거기있다. – Brainbot
글꼴에 렌더링하려는 문자가 포함되어 있습니까? 글꼴이 성공적으로로드 되었습니까? – cppguy