2016-07-04 42 views
1

我開發了一款使用OpenGL和C++的遊戲,它一切正常,但我需要修復這個小故障:當我移動相機(使用鼠標)時,我的地圖不會保留在固定位置。 它基本上是一個正方形(gl_quad),我畫在我面前。OpenGL固定斑點圖故障

這是毛刺的一個示例:

Video

這是一個正方形的繪製代碼,如果它是需要的

texture = scene->getTexture("map_papyrus.png"); 
    glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); 
    glEnable(GL_BLEND); 
    glUseProgram(this->shader->getRes()); 
    glActiveTexture(GL_TEXTURE0); 
    GLint texture_location = glGetUniformLocation(this->shader-    >getFragment(), "color_texture"); 
    glUniform1i(texture_location, texture_location); 
    glBindTexture(GL_TEXTURE_2D, this->texture->getRes()); 


glBegin(GL_QUADS); 
float size = .5f; 
float offsetx = 0.0f; 
float offsety = 0.0f; 
if (set->easymode) { size = .2f; offsetx = 0.8f; offsety = 0.35f; } 
glTexCoord2f(0,0); glVertex2f(-size + offsetx, -size + offsety); 
glTexCoord2f(1, 0); glVertex2f(size + offsetx, -size +offsety); 
glTexCoord2f(1,1); glVertex2f(size + offsetx, size + offsety); 
glTexCoord2f(0, 1); glVertex2f(-size + offsetx, size + offsety); 
glEnd(); 
glTranslated(0, 0, 0.00001); 
+0

如何移動相機?你的着色器是怎樣的? – BDL

+0

我猜測地圖在渲染後會移動。這就是爲什麼它落後於此。 –

回答

1

相反呈現GUI元素作爲3D的一部分的世界,我寧願畫完這個世界,然後覆蓋那個gui(沒有清除緩衝區)。

這樣HUD不需要根據相機的位置和旋轉進行移動。此外,平視顯示器元素不會與世界剪輯。

glClear(...) 
// Scene: 
glPushMatrix() 
glPerspective(...) 
glTranslatef(...) 
glRotatef(...) 
glBegin(...) 
// ... 
glEnd(...) 
glPopMatrix() 
// UI: 
glPushMatrix() 
glOrtho(...) 
glBegin(...) 
// ... 
glEnd(...) 
glPopMatrix() 
// Swap buffers 
+0

我在網上搜索,我沒有找到一個適當的指導如何使HUD,我認爲你不能在glfw – ScazzoMatto

+1

繪製的東西你可以。在OpenGL中。 –