【发布时间】:2013-07-16 11:43:03
【问题描述】:
我正在使用 C++ 和 DirectX 11 编写一个小型渲染引擎。我已经设法使用索引顶点渲染模型。现在我也想支持纹理和顶点法线。我正在使用 Wavefront OBJ 文件,它使用索引来引用正确的纹理和法线坐标(很像索引顶点)。这是我第一次将顶点、纹理和法线结合起来做这样的事情,所以这对我来说有点新鲜。
我面临的问题是顶点、法线和纹理坐标的索引数量不一样,我正在尝试找到在顶点着色器中使用所有这些索引的正确方法。为了更清楚地说明问题,我制作了一些图像。
左图是一个简单的金字塔对象的线框,右图是它的 UV 坐标布局(金字塔的底部在中心)。在左图中,您可以看到 piramid 有 4 个顶点,因此有 4 个顶点索引。正确的 UV 布局有 6 个 UV 坐标,因此有 6 个纹理索引。因为金字塔的每个面都有自己的法线,所以只有 4 个法线索引。
我在搜索 SO 时发现了this 问题,它似乎在理论上可行(我还没有尝试过)。这是解决此类问题的常用方法还是有更好的方法?你会建议我做什么?
谢谢:)
P.S.:我的顶点、法线和纹理数据存储在 cpu 端的单独数组中。
【问题讨论】:
标签: c++ directx hlsl directx-11