gpt4 book ai didi

c++ - 使用 gluPerspective()

转载 作者:搜寻专家 更新时间:2023-10-31 00:19:36 25 4
gpt4 key购买 nike

我正在学习 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 设置为零。它搞砸了the math :

Because r = zFar / zNear approaches infinity as zNear approaches 0, zNear must never be set to 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 轴。

关于c++ - 使用 gluPerspective(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7897107/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com