2010-11-12 21 views
1

我想所示使用一堆多边形的贝壳的模型,例如:link text模型在OpenGL

但我是新来的OpenGL。我将如何开始建模,这个过程会是什么样子?

回答

3

我假设你要生成几何而不是“雕刻它”。

您需要做的就是像在数学示例中一样生成几何图形,并将其存储在vertex buffer objects(VBO)中。有多种方法可以做到这一点,但通常您需要将顶点信息(位置,常规,纹理坐标,如果有的话)存储在一个缓冲区中,以及这些顶点在另一个(称为索引数组)中被分组为面部的方式。

然后,您可以绑定这些缓冲区并通过一次调用glDrawElements()来绘制它们。

要小心,面的顶点都是在相同的顺序(逆时针或顺时针)和绕组顺序正确指定给OpenGL,否则你会得到你的壳!

在OpenGL 1.4及更高版本中支持VBOs。在极少数情况下,您的目标平台不支持(首先更新您的驱动程序!),您可以使用Vertex Arrays。他们做的事情几乎是一样的,但是他们在每一帧都通过总线发送时速度较慢。

-1

尽管在程序上建模对象(即在坐标中以数字形式生成坐标)对于学习目的可能没有问题,但它绝对不是您想要做的事情,因为如果您的任何东西比几个三角形更复杂,它变得非常不切实际或者一个cyllinder)。有些人认为程序一代是一门艺术,但是你需要大量的练习才能用这种方法取得好看的(更不用说现实的)结果。

如果你想显示一个更复杂,逼真的模型,采取的办法是:

  • 创建的建模工具模型(如自由和强大的Blender
  • 将它保存到一个文件在给定的格式,
  • 在你的程序中,从文件加载对象到存储器(要么您的RAM使用顶点数组或您GPU存储器以显示直接使用顶点缓存对象)并显示它。

通用格式(虽然老不方便的一个)是.obj(波前OBJ),搅拌机能够保存到这一点,你很可能给谷歌一个OpenGL OBJ装载机(或者你可以滚你自己 - untrivial,但仍然很容易)。

另一种方法是为Blender创建一个导出脚本(非常简单,如果你知道Python)并将该模型保存为包含顶点等的简单二进制文件;然后很容易地将它加载到应用程序代码中。