我正在制作一个小型的3D图形游戏/演示,用于个人学习。我了解d3d9和相当多的d3d11知识,但目前对opengl知之甚少,因此我打算将实际的图形渲染抽象出来,这样我的场景图和所有“上层”内容都不需要太了解如何绘制图形。我打算先让它与d3d9配合工作,然后添加d3d11支持,最后再添加opengl支持。这只是为了学习3D图形和抽象而进行的练习。
但我现在对opengl并不了解,也不想让我的抽象接口暴露任何在opengl中难以实现的东西。具体来说,我正在研究顶点缓冲区。在d3d中,它们本质上是一组结构体数组,但是看看opengl接口,等价物似乎是顶点数组。然而,这些似乎有所不同,你需要为顶点、法线、纹理坐标等分别设置一个单独的数组,并使用glVertexPointer、glTexCoordPointer等指针来设置。
我希望能够实现类似于directx的VertexBuffer接口,但看起来在d3d中,你有一个结构体数组,在opengl中你需要为每个元素单独设置一个数组,这使得找到一个通用的抽象变得非常困难,而且效率也不高。
有没有办法以类似于directx的方式使用opengl?或者有没有关于如何设计一个高级抽象来有效地与两个系统配合工作的建议?
但我现在对opengl并不了解,也不想让我的抽象接口暴露任何在opengl中难以实现的东西。具体来说,我正在研究顶点缓冲区。在d3d中,它们本质上是一组结构体数组,但是看看opengl接口,等价物似乎是顶点数组。然而,这些似乎有所不同,你需要为顶点、法线、纹理坐标等分别设置一个单独的数组,并使用glVertexPointer、glTexCoordPointer等指针来设置。
我希望能够实现类似于directx的VertexBuffer接口,但看起来在d3d中,你有一个结构体数组,在opengl中你需要为每个元素单独设置一个数组,这使得找到一个通用的抽象变得非常困难,而且效率也不高。
有没有办法以类似于directx的方式使用opengl?或者有没有关于如何设计一个高级抽象来有效地与两个系统配合工作的建议?