0

我使用 OpenGL ES 2.0 自己创建了一些简单的渲染器。本质上,它只是一个根据给定的精灵纹理渲染四边形的类。详细地说,它实际上只是一个接受表示四边形的对象的对象。每个四边形对象维护一个世界变换和对象变换矩阵,并提供在给定数量的帧上变换它们的方法,并且还指定精灵的纹理偏移量。这个四边形类还维护了一个要在其矩阵上执行的变换操作列表。渲染器类然后从四边形读取所有这些属性并设置一个 VBO 来绘制渲染列表中的所有四边形。

例如:

Quad q1 = new Quad();
Quad q2 = new Quad();

q1->translate(vector3( .1, .3, 0), 30); // Move the quad to the right and up for 30 frames.
q2->translate(vector3(-.1, -.3, 0), 30); // Move the quad down and to the left for 30 frames.

Renderer renderer;
renderer.addQuads({q1, q2});
It's more complex than this, but you get the simple idea.

从实现的角度来看,在每一帧上,它根据指令转换每个对象的基本顶点,将它们全部加载到包含 alpha 值信息的 VBO 中,然后传递给着色器程序以一次绘制所有四边形。

这显然不是我所说的渲染引擎,而是执行类似的任务,仅用于渲染 2D 四边形而不是 3D 几何。我只是好奇我是否走上了开发临时渲染引擎的正确轨道。我同意在大多数情况下,使用已建立的渲染引擎开始理解它们是很棒的,但从我的角度来看,我喜欢了解事物是如何实现的,而不是学习一些预先构建的东西然后学习它是如何工作的。

4

1 回答 1

0

这种方法的问题在于添加新的几何图形、纹理或动画需要编写代码。应该可以使用已建立的工具(如 3DS、Maya 或 Blender)为游戏引擎创建内容,这些工具是完全交互式的。这需要读取和解析一些标准文件格式,例如 Collada。我不想通过自己实现代码来打消你学习的欲望,但你真的应该看看 PowerVR SDK,它为构建游戏引擎提供了很多重要的部分。提供源代码并且它是免费的。

于 2013-07-12T19:39:48.143 回答