【发布时间】:2012-02-19 02:57:00
【问题描述】:
我正在用 C++ 和 DirectX 9 编写一个图形引擎,我打算在以后的游戏中使用它。前段时间,我在 OpenGL 中编写了一个功能齐全的 2D 引擎和一个基本的 3D 引擎,但现在我决定在 DirectX 9 中开始一个新项目。
在我以前的引擎中,我创建了一个Entity 类型的std::vector,它可以包含Tank、Weapon、Particle 等子类型。然后,我会通过多态性做一些类似'@ 987654326@'。绘图函数会做glVertex3f(...)。
现在我的问题是:如何在 DirectX 9 中实现类似的面向对象框架?我正在考虑为从文件加载的每种类型(Tank,Weapon)保留一个顶点数组,将所有对象的所有顶点复制到同一个顶点缓冲区,然后为每个顶点子集调用DrawPrimitive .这是执行此操作的正确方法/一般方法吗?还是应该为场景中的不同对象创建不同的顶点缓冲区?一些伪代码可以很好地说明正确的实现。
【问题讨论】: