「トップ」または3D世界でレンダリングされた2Dインターフェイスを作成する必要があるプロジェクトで作業しています。他のいくつかのフォーラムでは、仕事のために "GluOrtho2D()"を使用し、完了したらGluPerspective()に戻ることができます。唯一のことは、私が書いた私のテストコードは2Dのクワッドではなく、3Dの世界を表示するということです。ただし、3Dレンダリングコードを無効にすると、クワッドは想定されていた場所に表示されます。 私はコードを以下のように記述したopenGL only文にトリムダウンしました。コードはPygletライブラリを使ってPythonで書かれています。3D OpenGLワールドで2Dインターフェイスを作成する際の問題
シーンの初期化コード:
glViewport(0, 0, width, height)
glMatrixMode(GL_PROJECTION)
glLoadIdentity()
gluPerspective(60.0, float(width)/height, .1, 10000.)
glMatrixMode(GL_MODELVIEW)
glClearDepth(1.0)
glShadeModel(GL_FLAT)
glEnable(GL_DEPTH_TEST)
glDepthFunc(GL_LEQUAL)
glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST)
フレームレンダリングコード。 builder.buildMap()への呼び出しは、3Dシーンを作成し、glBegin-glEndのペアは、2Dクワッドを描画:
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT)
stage.set3DMode(window.width, window.height)
builder.buildMap()
stage.set2DMode(window.width, window.height)
glBegin (GL_QUADS)
glVertex2i(0, 0)
glVertex2i(0, 200)
glVertex2i(200, 200)
glVertex2i(200, 0)
glEnd()
stage.set3DMode機能:
glDisable(GL_DEPTH_TEST)
glMatrixMode(GL_PROJECTION)
glLoadIdentity()
gluOrtho2D(0, width, 0, height)
glMatrixMode(GL_MODELVIEW)
とstage.set3DMode機能:
glEnable(GL_DEPTH_TEST)
glMatrixMode(GL_PROJECTION)
glLoadIdentity()
gluPerspective(60.0, float(width)/float(height), .1, 10000.)
glMatrixMode(GL_MODELVIEW)
本当に誰かが私の間違いを指摘してくれることを願っています!そして、私を助けてくれてありがとう:)
完璧!それはそれを修正した。どうもありがとうございました! – Bartvbl