1

gluPerspectiveそれぞれが他のものを使用したり組み合わせたりすることを提案する多くのチュートリアルがありglFrustumましたが、正しいマトリックスを設定するのは困難でした. +z 軸を見下ろす 45 度の透視図を設定するには、どのコードが必要ですか?

これまでのところ、私は持っています:

glShadeModel(GL_SMOOTH);
glClearColor(0,0,0,0);
glClearDepth(1);
glDepthFunc(GL_LEQUAL);
glViewport(0,0,width,height);
glEnable(GL_DEPTH_TEST);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(45,1,0.1,100);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();

しかし、それはうまくいかないようです。何かを描こうとすると黒い画面が表示されるだけです。

編集: 最小限の描画コードは次のとおりです。

glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
glColor3ub(255,255,255);
glBegin(GL_TRIANGLE_STRIP);
 glVertex3f(20,20,20);
 glVertex3f(20,30,20);
 glVertex3f(30,20,20);
 glVertex3f(30,30,20);
glEnd();
4

2 に答える 2

2

(1,1,1) や (2,50,23) 上の点など。それらは表示されません。

さて、あなたの問題があります。デフォルトの OpenGL カメラには、+Z 軸がカメラの方向を向いいます。また、カメラは Z=0 にあるため、Z 位置が >0 の位置はカメラの後ろにあります。

ポイントをカメラの前に移動します。少なくとも -Z 位置が必要です。

于 2012-04-28T04:37:48.517 に答える
1

編集: 最小限の描画コードは次のとおりです。

glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
glColor3ub(255,255,255);
glBegin(GL_TRIANGLE_STRIP);
 glVertex3f(20,20,20);
 glVertex3f(20,30,20);
 glVertex3f(30,20,20);
 glVertex3f(30,30,20);
glEnd();

頂点座標は、表示ボリュームの外側にあります。まず、OpenGL はデフォルトで負の Z 軸を見下ろすため、選択したニア クリップ プレーンとファー クリップ プレーンの Z 座標は -100 < z < -0.1 でなければなりません。

しかし、Z 座標の符号を反転しても、頂点は 45° FOV の外側にあります。(20, 0, 20) は表示軸から 45°、(30, 0, 20) はさらに離れています。(+/-1, +/-1, -5) のように (0,0,-5) の周りに頂点座標を配置してみてください

于 2012-04-28T08:57:47.900 に答える