Using gluPerspective()

Using gluPerspective()

本文关键字:gluPerspective Using      更新时间:2023-10-16

我正在学习OpenGL;我设法使我的第一个2D程序,但我坚持使用gluPerspective。

我正在尝试一个小测试,试图掌握我如何去做一个3D项目,但我似乎不能弄清楚我错过了什么,什么是需要使这个小测试工作:

void init_perspective()
{
SDL_Init(SDL_INIT_EVERYTHING); 
SDL_SetVideoMode(640, 480, 32, SDL_OPENGL); 
SDL_WM_SetCaption( "OpenGL Test", NULL ); 
glClearColor( 0, 0, 0, 0 ); 
glMatrixMode( GL_PROJECTION );
glLoadIdentity();
gluPerspective(45, 1.333, 0, 100); 
glMatrixMode( GL_MODELVIEW );
glLoadIdentity();
glClear( GL_COLOR_BUFFER_BIT );
}
int main( int argc, char **argv)
{
init_perspective();
glTranslatef( 200, 200, 50 );
glColor4f(1.0,1.0,1.0,1.0);
glBegin(GL_QUADS);
    glVertex3f(0, 0 ,0);
    glVertex3f(50,0 ,10);
    glVertex3f(50,50,30);
    glVertex3f(0, 50,0);
glEnd();
glLoadIdentity();
SDL_GL_SwapBuffers();
SDL_Delay(1000);
SDL_Quit();
return 0;
}

如果有人能告诉我什么函数调用我可以使用,并在这个测试代码中缺失,所以我可以有一个玩耍,了解3D OpenGL是如何工作的,我会很感激。

gluPerspective (45, 1.333, 0 , 100年),

永远不要将zNear设置为零。它把数学弄乱了:

由于r = zFar / zNearzNear趋近于0时趋近于无穷大,因此zNear绝不能设为0。

选择较小的正数,如0.0112

编辑:另外,把你的相机放在可以看到你的几何图形的地方:

int main( int argc, char **argv)
{
init_perspective();
glTranslatef(0,0,-5);
glColor4f(1.0,1.0,1.0,1.0);
glBegin(GL_QUADS);
    glVertex2f(-1,-1);
    glVertex2f( 1,-1);
    glVertex2f( 1, 1);
    glVertex2f(-1, 1);
glEnd();
SDL_GL_SwapBuffers();
SDL_Delay(1000);
SDL_Quit();
return 0;
}

默认情况下,它从位置(0,0,0)向下看-Z轴