我正在学习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;
}
Run Code Online (Sandbox Code Playgroud)
如果有人能告诉我在这个测试代码中可以使用和缺少哪些函数调用,那么我可以玩游戏并了解3D OpenGL如何工作我将不胜感激.
gluPerspective(45,1.333,0,100);
切勿将zNear设置为零.它弄乱了数学:
因为
r = zFar / zNear接近无穷大zNear接近0,所以zNear绝不能设置为0.
选择一些像0.01或的小正数12.
编辑:此外,将您的相机放在某处,以便它可以看到您的几何:
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;
}
Run Code Online (Sandbox Code Playgroud)
默认情况下,它从位置(0,0,0)向下看-Z轴.
| 归档时间: |
|
| 查看次数: |
10080 次 |
| 最近记录: |