c++ - 陷入构建游戏引擎的困境

标签 c++ opengl sdl

我正在尝试使用 C++、SDL 和 OpenGL 构建一个(简单的)游戏引擎,但我似乎无法弄清楚下一步。这就是我到目前为止所拥有的......

控制主游戏循环的引擎对象

将渲染场景的场景渲染器

可以压入和弹出的游戏状态堆栈

每个状态都有一个参与者的集合,每个参与者都有一个三角形的集合。 场景渲染器成功设置 View 投影矩阵

我不确定我遇到的问题是否与如何存储 Actor 位置或如何创建渲染队列有关。

我读到,创建一个渲染队列非常有效,该队列将从前到后绘制不透明多边形,然后从后到前绘制透明多边形。因此,我的 Actor 调用场景渲染器对象的“queueTriangle”方法。然后场景渲染器对象存储一个指向每个 Actor 三角形的指针,然后根据它们的位置对它们进行排序,然后渲染它们。

我面临的问题是,要发生这种情况,三角形需要知道它在世界坐标中的位置,但如果我使用 glTranslatef 和 glRotatef,我不知道这些坐标!

有人可以请给我一个解决方案,或者给我链接到如何解决这个问题的(简单)指南吗?

谢谢!

最佳答案

如果您编写一个相机类并使用其函数在世界中移动/旋转它,您可以使用从内部四元数获得的矩阵来转换顶点,为您提供相机空间中的位置,以便您可以对三角形进行排序从后到前。

关于c++ - 陷入构建游戏引擎的困境,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1550904/

相关文章:

c++ - 将变量传递给多个类 - C++

c++ - 如何使用 OpenGL ES2、GLSL、C++ 将模型矩阵数据缓冲到纹理中?

c++ - MFC 到 QT 的转换

c++ - C/C++ 中字符 ('a' ) 的大小

c++ - SDL + OpenGL 的高 CPU 使用率

opengl - 如何在opengl中使用不同的独立重叠层?

c++ - SDL 图像撕裂/卡顿

c++ - 在 SDL2 中,游戏显示在屏幕的左下角

c++ - 这些整数是否未对齐,我应该关心吗?

c++ - OpenGL 3.2 为什么我会收到 glTexStorage3D 的 INVALID_ENUM 错误?