有人可以向我解释一下如何在编译后修改OpenGL中的显示列表吗?我该如何强制执行,例如对其进行矩阵变换?
提前致谢。
答案 0 :(得分:5)
显示列表是不可变的;一旦创建,你就无法改变它们。这就是他们的重点。
如果要将几何体内置到可以在矩阵定义的位置渲染的显示列表中,则只需将矩阵命令放在显示列表中即可。只需将绘图内容放在显示列表中即可。如果要渲染该几何图形,请执行设置工作(包括矩阵填充),然后执行显示列表。
您当前的代码如下所示:
//Every frame
glRotatef(...);
glTranslatef(...);
///More setup work.
glBegin(...);
glVertex/TexCoord/Color/etc(...);
...
glEnd();
基于显示列表的代码应如下所示:
//Initialization. Done once.
glBeginList(...);
glBegin(...);
glVertex/TexCoord/Color/etc(...);
...
glEnd();
glEndList();
//Every frame
glRotatef(...);
glTranslatef(...);
...
glCallList(...);