征求关于编写一个纯粹的业余渲染引擎的建议



我使用OpenGL ES 2.0自己创建了一个简单的渲染器。本质上,它只是一个根据给定的精灵纹理渲染四边形的类。更详细地说,它实际上只是一个接受表示四边形的对象的对象。每个四元对象都维护一个世界变换和对象变换矩阵,并提供在给定帧数上变换它们的方法,还指定精灵中的纹理偏移。这个quad类还维护了一个要在其矩阵上执行的转换操作列表。然后,渲染器类从四边形中读取所有这些属性,并设置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几何体。我只是好奇我是否在开发一个临时渲染引擎的正确轨道上。我同意,在大多数情况下,使用一个成熟的渲染引擎来开始理解它们是很好的,但从我的角度来看,我喜欢对事物是如何实现的有一些了解,而不是学习预先构建的东西,然后学习它是如何工作的。

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

最新更新