OpenGL保存渲染供以后使用
-
29-09-2019 - |
题
这是一个很漂亮的初学者问题,但是鉴于我在OpenGL中呈现一个复杂的形状,需要大量计算,无论如何是否有将其导出到像模型这样的状态,稍后可以再次打开,因为您不会再编辑它?
由于程序启动时,我无法在程序之外创建它们(带有搅拌机)。然后,渲染被翻译,旋转,绘制等等。请注意,我不需要编辑形状,但是我确实希望它以3D状态,因此保存图像不是一个选择。
我正在使用opentk 1.0,vb.net(.net 4)
其他提示
这听起来像是OpenGL显示列表的理想情况。您使用它们的方式是首先向OpenGL询问显示列表ID:
GLuint draw_id = glGenLists(1);
(您可以一次要求几个连续的ID,但是在这种情况下,我们只要求1)然后,第一次通过您的绘制例程,致电Glnewlist:
glNewList(draw_id, GL_COMPILE);
<do compute intensive drawing here>
glEndList();
请注意,这实际上不会呈现您的形状(您可以在glnewlist中使用gl_compile_and_execute, 将要 呈现形状,但通常会灰心)
现在,每当您需要绘制对象时:
< set up your OpenGL matrices >
glCallList(draw_id);
最后,当您完成它后,您可以使用Gldeletelists。
显示列表实际上可以加快渲染速度,因为可以进行一些优化,并且所有功能调用开销将被删除。
现在,从技术上讲,OpenGL显示列表已在OpenGL 3.0及更高版本(与Gltranslate,Glvertex Glbegin ... grrr一起)中被弃用(未删除!),但是它们在可预见的未来仍应工作。要成为将来的证明,您应该使用顶点阵列,但这要复杂得多。
不隶属于 StackOverflow