我们用glNewList()命令来开始构造显示列表。第二个参数GL_COMPILE告诉OpenGL我们想预先在内存中构造这个列表,这样每次画的时候就不必重新计算怎么构造物体了。GL_COMPILE类似于编程。在你写程序的时候,把它装载到编译器里,你每次运行程序都需要重新编译。而如果他已经编译成了.exe文件,那么每次你只需要点击那个.exe文件就可以运行它了,不需要编译。当OpenGL编译过显示列表后,就不需要再每次显示的时候重新编译它了。这就是为什么用显示列表可以加快速度。

你可以在glNewList()glEngList()中间加上任何你想加上的代码。可以设置颜色,贴图等等。唯一不能加进去的代码就是会改变显示列表的代码。显示列表一旦建立,你就不能改变它。

比如你想加上glColor3ub(rand()%255,rand()%255,rand()%255),使得每一次画物体时都会有不同的颜色。但因为显示列表只会建立一次,所以每次画物体的时候颜色都不会改变。物体将会保持第一次建立显示列表时的颜色。 如果你想改变显示列表的颜色,你只有在调用显示列表之前改变颜色。

OpenGL的显示列表成员变量区:
OpenGL的显示列表    
int m_GLPixelIndex;
OpenGL的显示列表    HGLRC m_hGLContext;
//绘制环境
OpenGL的显示列表

OpenGL的显示列表    GLfloat xrot;
//绕x轴旋转量
OpenGL的显示列表
    GLfloat yrot;//绕y轴旋转量
OpenGL的显示列表

OpenGL的显示列表    GLfloat xspeed;                                    
// X 旋转速度
OpenGL的显示列表
    GLfloat yspeed;                                    // Y 旋转速度
OpenGL的显示列表

OpenGL的显示列表    GLfloat    z;                                
// 深入屏幕的距离
OpenGL的显示列表

OpenGL的显示列表    GLuint filter;
OpenGL的显示列表    GLuint texture[
1];
OpenGL的显示列表    GLfloat LightAmbient[
4];                 // 环境光参数
OpenGL的显示列表
    GLfloat LightDiffuse[4];                 // 漫射光参数
OpenGL的显示列表
    GLfloat LightPosition[4];                 // 光源位置
OpenGL的显示列表

OpenGL的显示列表    GLboolean bLighting;
//是否启用光照 
OpenGL的显示列表
    bool lPressed;
OpenGL的显示列表    
bool fPressed;
OpenGL的显示列表
OpenGL的显示列表
OpenGL的显示列表    GLuint box;
// 保存盒子的显示列表
OpenGL的显示列表
    GLuint top;// 保存盒子顶部的显示列表
OpenGL的显示列表
    GLuint xloop;// X轴循环变量
OpenGL的显示列表
    GLuint yloop;// Y轴循环变量
OpenGL的显示列表

OpenGL的显示列表
OpenGL的显示列表
static GLfloat boxcol[5][3];
OpenGL的显示列表
OpenGL的显示列表
static GLfloat topcol[5][3];

OpenGL的显示列表成员函数区:
OpenGL的显示列表
OpenGL的显示列表BOOL COpenGLDemoView::PreTranslateMessage(MSG
* pMsg) 
}
效果如图所示:  
OpenGL的显示列表

相关文章:

  • 2021-11-29
  • 2021-12-16
  • 2021-08-18
  • 2022-12-23
  • 2021-10-13
  • 2021-12-14
  • 2022-12-23
猜你喜欢
  • 2021-08-18
  • 2021-09-29
  • 2022-01-27
  • 2022-12-23
  • 2021-10-08
相关资源
相似解决方案