0

距離の設定方法がわからない

2D のものを見るために立つべき場所 (中心にボール pos:1024/2,768/2 があります)

gluLookAt と glPerspective を使用して、回転した 2D オブジェクトに 3D 感を与えます

とにかく、ここに私がglOrthoで使用するコードがあります:

    glMatrixMode ( GL_PROJECTION );
    glLoadIdentity(); 
    glOrthof ( 0, 1024, 768, 0, 0, 1000.0f );
    glMatrixMode ( GL_MODELVIEW );
    glLoadIdentity();

これは、glPerspective と gluLookAt を使用してセットアップしようとしたときです。

  glMatrixMode ( GL_PROJECTION );
    glLoadIdentity();
    gluPerspective(90,1024/768,0,300);
    gluLookAt(1024 * 0.5,768 * 0.5f,-????,   1024 * 0.5,768 * 0.5,0,   0,-1,0);
    glMatrixMode ( GL_MODELVIEW );
    glLoadIdentity();

基本的に、同じように機能するコードが欲しいだけです.gluPerspectiveのfovy値を設定する方法がわかりません.??? gluLookAtから、幅1024、高さ768でフルサイズを投影する方法は?

4

1 に答える 1

0

glOrtho は平行投影を生成するはずなので、本質的に gluPerspective を使用することはまったく逆になります。glOrtho のように動作する gluPerspective の特別なケースを見つけたい場合、問題は、それらが生成する行列が、到達できないいくつかの点で異なることです。特に、生成されるものの右下隅に注意してください。

グロルト

   |     2                               |
   |----------      0          0      t  |
   |right-left                         x |
   |                                     |
   |                 2                   |
   |    0       ----------     0      t  |
   |            top-bottom             y |
   |                                     |
   |                                     |
   |    0           0          -2        |
   |                        --------  t  |
   |                        far-near   z |
   |                                     |
   |    0           0          0      1  |


gluPerspective

   |    f                                   |
   |  ------  0      0            0         |
   |  aspect                                |
   |                                        |
   |    0     f      0            0         |
   |                                        |
   |             zFar+zNear  2*zFar*zNear   |
   |    0     0  ----------  ------------   |
   |             zNear-zFar   zNear-zFar    |
   |                                        |
   |    0     0      -1           0         |

そのため、最初は 2/(上-下) と下の行を正しく設定するのが難しくなります。

この行が問題の核心である場合:

gluLookAt(1024 * 0.5,768 * 0.5f,-????,   1024 * 0.5,768 * 0.5,0,   0,-1,0);

...それからあなたを設定してください-???? シーンの中心からあなたの目までの距離を示す正の値にします (OpenGL の正の Zは視聴者に向いています)。

于 2012-11-20T13:08:21.320 に答える