0

エンジンですべてを起動して実行しようとしていますが、すべてを正しくレンダリングするためにオブジェクトとライトを追加する順序を理解するのに問題があります。

イタリゼーションでプロジェクションとモデルビューマトリックスを設定しました。

glMatrixMode(GL_PROJECTION);
glLoadIdentity();                            

gluPerspective(75.0f,(GLfloat)width/(GLfloat)height, 0.1f , 1000.0f);

glMatrixMode(GL_MODELVIEW);                         
glLoadIdentity(); 

次に、ジオメトリをレンダリングするときに、バッファをクリアして単位行列をロードし、カメラを更新します。

glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glLoadIdentity();

// Camera updates
glRotatef(camera.anglePitch, 1.0f, 0.0f, 0.0f);
glRotatef(camera.angleYaw, 0.0f, 1.0f, 0.0f);
glTranslatef(-camera.position.x, -camera.position.y, -camera.position.z);

// Now render
level.render();

私のレベルのビューはカメラであり、私が収集するのは目の座標が動き回ることです。私は自分のレベルでオブジェクトとライトをレンダリングし、それらを正しい場所に表示させようとしています。

世界の特定の場所にオブジェクトを追加する必要があります。たとえば、(10、10、25)のトーラス。このトーラスオブジェクトをレンダリングする前に、10、10、25で正しく表示されるようにするために必要なことはありますか?たとえば、レンダリングしてから翻訳する必要がありますか?

また、パート2はライトと関係があります。それはほとんど同じ質問です。50、50、50のライトをレンダリングする場合、どのような考慮が必要ですか?ライトを通常どおりに配置することはできますか、それとももう一度ライトをそこに変換する必要がありますか?それとも私はこれを考えすぎていますか?

4

1 に答える 1

1

私がこの問題を理解していれば、あなたがこれを考えすぎていることに同意します。glTranslateとglRotateからの変換は、modelviewマトリックスに適用されます。これにより、すべての頂点が乗算され、後で投影でクリップされる目の座標が提供されます。同じ変換がライトにも適用されます。

glPopMatrixとglPushMatrixを使用して、モデルビューマトリックスのさまざまな状態をさまざまな頂点に適用することもできます。

http://www.opengl.org/resources/faq/technical/transformations.htmの質問9.070も参照してください。

于 2011-12-13T01:21:22.777 に答える