这是一个很漂亮的初学者问题,但是鉴于我在OpenGL中呈现一个复杂的形状,需要大量计算,无论如何是否有将其导出到像模型这样的状态,稍后可以再次打开,因为您不会再编辑它?

由于程序启动时,我无法在程序之外创建它们(带有搅拌机)。然后,渲染被翻译,旋转,绘制等等。请注意,我不需要编辑形状,但是我确实希望它以3D状态,因此保存图像不是一个选择。

我正在使用opentk 1.0,vb.net(.net 4)

有帮助吗?

解决方案

显而易见的可能性是将您的顶点写入文件,然后在需要时重新加载。除非您有特定的理由去做其他原因,否则最好使用许多现有文件格式之一,例如 波前OBJ, ,ogre3d 网状XML 文件, ETC.

其他提示

这听起来像是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一起)中被弃用(未删除!),但是它们在可预见的未来仍应工作。要成为将来的证明,您应该使用顶点阵列,但这要复杂得多。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top