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 / 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;
}
默认情况下,它从位置(0,0,0)向下看-Z轴
相关文章:
- "using namespace std;"在C++的作用是什么?
- vector<vector<double>> to mxArray using memcpy
- Using C++ CryptAPI:CNG Create CSR
- STLPort using C++11
- 函数中的 c++ using 语句,后跟函数名称(对于 ADL?
- Using getchar_unlocked()
- 类作用域的类型别名"using":[何时]方法中的用法可以先于类型别名?
- 嵌套命名空间的"using"指令,但需要命名内部命名空间
- 为什么"using System;"不被视为不良做法?
- 为什么我需要做'using namespace std'而不是"使用 std::cout"?
- 'using namespace'实现细节的便捷方法(仅标头库)?
- C++中"typedef"、"using"、"namespace"和"using namespace"有什么区别?
- 在"template"和函数声明之间使用:template<typename trait> using tr = base_trait<trait> void fn(tr::t
- 如何区分C++中的"using declaration"和"using directive"?
- C++ "using tcp=x"到"namespace tcp=x"有什么区别
- 如何为流输出运算符提供重载<<模板'using'类型别名?
- Using PrimitiveBatch::DrawIndexed with ID3D11DeviceContext::
- 如何创建一个 while 循环,继续循环,直到在C++中输入'using streams'键?
- 是否可以使用 using 将基类中的公共成员重新声明为派生类中的私有成员?
- Using gluPerspective()