2012-09-28 25 views
0

我想在我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

」我'配置文件上下文,3.3 GLSL「你也使用ARB_shader_objects,你應該永遠不會做***。無法保證您可以獲得GLSL 3.30。您應該使用核心着色器功能,而不是擴展名。我不知道這是你的問題,但它不是一個好主意。 –

+0

我已經取代了ARB功能,但問題仍然存在。 – Brainbot

+0

字體是否包含您要呈現的字符?字體是否成功加載? – cppguy

回答

相關問題