显示列表生成

Luc*_*uca 0 c# opengl performance rendering

我正在开发一个使用OpenGL提供的显示列表的应用程序.我的想法是为重复性任务调用显示列表,例如转换和服务器状态集.实际上,该实现允许每个可渲染对象有两个显示列表.在这两种情况下,显示列表不包含顶点,法线等,而只包含矩阵和服务器状态.

我现在的问题是如何决定何时生成显示列表:在某些情况下,可能会发生生成显示列表的属性发生变化,从而导致显示列表的新编译(想想旋转对象的鼠标移动).

仅当在N个渲染循环中未更改属性时,才可能生成显示列表?如何量化这个N?我应该禁用临时特定的显示列表吗?

注意:源可以在Renderable(187:201)和RenderState(315:356)中找到.对不起身份(我认为这是我的VS ......)我现在才注意到.:(

OT:如何重新格式化身份?:)

Jes*_*der 6

说实话,我建议不要使用显示列表.它们已被OpenGL标准弃用.相反,您应该使用顶点缓冲区(签出glDrawArraysglDrawElements).

然后,您不必担心重新生成显示列表,只需设置顶点数组即可.