2016-07-04 3 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

代わりの3Dの一部としてGUI要素のレンダリングに必要とされる場合、これは、正方形の描画コードであります私はむしろ世界を描き終えて、その上にgui(バッファをクリアすることなく)の上にオーバーレイしたいと思います。

このように、HUDはカメラの位置と回転に基づいて移動する必要はありません。 また、HUDの要素は世界とつながりません。

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

オンラインで検索しましたが、HUDを作成する方法について適切なガイドが見つかりませんでした。私はあなたがglfwで2Dを描けないと思います。 – ScazzoMatto

+1

できます。 OpenGLで。 –

関連する問題