一些OpenGL的笔记
来源:互联网 发布:如何统计不重复的数据 编辑:程序博客网 时间:2024/06/07 12:33
一些OpenGL的笔记
gluPerspective
gluPerspective的用法:
void gluPerspective( GLdouble fovy, //角度 GLdouble aspect,//视景体的宽高比 GLdouble zNear,//沿z轴方向的两裁面之间的距离的近处 GLdouble zFar //沿z轴方向的两裁面之间的距离的远处 );
记住,默认情况(也就是使用以下的语句)
glMatrixMode( GL_PROJECTION );glLoadIdentity( );
下,视口是朝向Z轴的负半轴的,我们在使用gluPerspective函数的时候,zNear和zFar是相对于我们的视口定义的。所以绘制图形的时候,决不能认为我们图形的z轴坐标是正的才能显示,恰恰相反,z轴坐标是负的才能显示。
注意:gluPerspective()函数中zNear一定要大于0,一旦等于0或小于0,则无法显示所有的三维物体。
当然了zFar要大于zNear,要不然也无法显示。
GlutPostRedisplay以及画面
注意:glutPostRedisplay()函数不能在渲染线程以外被调用,写在渲染线程之外的话调用将无效。
为什么我的画面在动的时候,移动窗口会出现一些延迟(俗称“有些卡”)?
因为游戏的绘制基本上在一个线程内进行,窗口化的程序FPS一般是60,取决于你设定的刷新率。这就意味着你在移动窗口的时候,系统同时要保证1秒内画面刷新60次,也就是说,1/60秒内才有一次响应你移动窗口的操作,我想一般的窗口不会这么频繁地刷新吧。所以呢,移动窗口会出现一些延迟,这是正常的。有的时候一些大型的游戏在进行密集GPU操作的时候,不也出现了移动窗口无法响应或者响应很慢的情况吗?
裁剪
glEnable( GL_DEPTH_TEST );// 使用深度测试glFrontFace( GL_CW ); // 顺时针的绘制为正面glEnable( GL_CULL_FACE ); // 剔除不是正面的面
如果让顺时针绘制的图形位正面,那么我们一旦画出了逆时针的图形,那么将不会显示,因为不是正面的面已经被剔除掉了。
显示列表
声明显示列表与渲染显示列表要倒置,否则无法渲染后声明的显示列表。例如:
void Init( void ){ glNewList( list1, GL_COMPILE ); … glEndList( ); glNewList( list2, GL_COMPILE ); … glEndList( );}void Render( void ){ /* 错误:无法显示list2。 glCallList( list1 ); glCallList( list2 ); */ glCallList( list2 ); glCallList( list1 );}
- 一些OpenGL的笔记
- OpenGL的一些资源
- OpenGL的一些基本概念
- opengl的一些小问题
- OpenGL ES 的一些问题
- OpenGL一些砸碎的东西
- 一些关于opengl的记忆
- opengl开发的一些网站
- OpenGL常见的一些错误
- android OpenGL的一些知识
- OpenGL Blend 的一些坑
- opengl 遇到的一些问题
- [OpenGL]利用OpenGL绘制一些简单的图形
- opengl学习---2.学习opengl的一些代码
- 学OpenGL的一些好的网站
- OpenGL的纹理显示-笔记
- 设置OPENGL光照的一些经验
- 学习OpenGL ES 的一些资料
- c++ clang_complete
- GIT和SVN之间的五个基本区别
- MapX中使用动态图层AnimationLayer,移动图元时标注和图元分离问题解决办法。
- linux 串口概述
- IOS学习之IOS沙盒(sandbox)机制和文件操作
- 一些OpenGL的笔记
- 搞不清楚csdn iteyes cnblogs 这几个技术博客之间的关系了
- RMAN 自动备份脚本设计
- RemoteViews嵌入ListView复杂布局
- Java Class卸载与ClassLoader
- Unity 3d 射线(获得鼠标点击的坐标[x,y,z])
- Symbol ?PBANK is redefined 重复定义宏
- php写的http协议
- 如何让Gridview在没有数据的时候显示表头(asp.net)