【发布时间】:2015-01-17 03:24:44
【问题描述】:
简而言之:包装更高级别“模型”对象所需的 OpenGL 缓冲区、着色器和/或矩阵的“首选”方式是什么?
我正在尝试用基于核心 OpenGL 3.3 的 C++ 编写这个微型图形引擎,我想实现一个尽可能干净的解决方案来包装更高级别的“模型”对象,该对象将包含其顶点缓冲区、全局位置/旋转、纹理(也许还有着色器?)和可能的其他信息。
我已经研究了this open source engine, called GamePlay3D 并且不太同意它解决这个问题的许多方面。有没有什么好的资源可以讨论现代 OpenGL 的这个主题?还是有一些简单而干净的方法来做到这一点?
【问题讨论】:
-
您能告诉我们您不同意 GamePlay3D 的哪些方面吗?
-
我注意到您说您正在创建一个图形引擎。您是否有任何构建您将使用该引擎的东西的经验?我问这个是因为开发人员陷入框架/引擎开发作为避免应用程序/游戏开发的一种常见模式。
-
我同意并且已经亲自经历了开发中的这些障碍 =) 但是在研究了这个自制引擎的可能替换之后,我得出的结论是,添加其他人的库会强制执行某些限制,因为它是带有图形引擎的案例对于实现干净、可重用的代码库是非常有害的,而这正是我非常看重的东西。此外,我计划制作的这个引擎应该是简约的,我正在同时开发我更大项目的其他部分。
-
@Jerem 有几点我不同意 GamePlay3D,我只是觉得写得太多了,也太有争议了,但我会在这里解释一下。 GamePlay3D 试图不仅仅是一个图形引擎,包括声音和物理库——我的目标是保持它的清洁。在查看了其中内置的一些应用程序示例后,我看到仍然需要在相当低的级别上配置多少高级对象,而我的目标是简化并为应用程序开发人员提供更抽象的编程接口。在某种程度上,我会说我的思维方式受到了 arch linux 的启发。
标签: opengl game-engine