2016-07-04 13 views
1

Ich entwickelte ein Spiel mit OpenGL und C++, alles funktioniert gut, aber diese Panne, die ich beheben muss: Wenn ich meine Kamera bewegen (mit der Maus) bleibt meine Karte nicht an einem festen Ort. Es ist im Grunde ein Quadrat (gl_quad), das ich vor mir zeichne. OpenGL Fixed Spot Map Glitch

Dies ist ein Beispiel für den Glitch:

Video

Dies ist der Zeichencode eines Quadrats, wenn es

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

Wie bewegen Sie die Kamera herum? Wie sieht dein Shader aus? – BDL

+0

Ich vermute, dass die Karte nach dem Rendern verschoben wird. Deshalb bleibt es so. –

Antwort

1
benötigt wird

Stattdessen GUI-Elemente als Teil des 3D-Rendering Welt, ich würde lieber fertig sein, die Welt zu zeichnen und dann darüber eine GUi zu überlagern (ohne den Puffer zu löschen).

Auf diese Weise muss sich das HUD nicht basierend auf der Position und Drehung der Kamera bewegen. Auch HUD-Elemente werden nicht mit der Welt klammern.

+0

Ich suchte online und ich fand keine richtige Anleitung, wie Sie ein HUD machen, ich denke, dass Sie nicht etwas 2D in glfw – ScazzoMatto

+1

können Sie zeichnen können. In OpenGL. –