我正在使用directx9编写一个小图形程序,它导入了一些使用.x文件中的blender创建的模型文件。到目前为止一切都很好。
模型有材质,有纹理,很容易获得纹理名称和正确渲染对象但是我想在一些材料上使用不同的效果(着色器)文件,但我找不到任何方法在.x文件中嵌入有关在模型中使用的着色器的信息。
我最好的想法是查看我的d3d9应用程序中的纹理文件名,并将纹理名称的查找表硬编码为效果文件。但这似乎并不优雅,也意味着我最终会复制和重命名纹理,因此我可以使用不同着色器的相同纹理。
我觉得我必须错过一个更简单的方法来做这个,有什么建议吗?
答案 0 :(得分:1)
与纹理图像文件不同,指定着色器程序可能非常复杂。您需要着色器文本以及所需参数的规范,以及为读取文件的人知道为参数设置哪些值以及如何设置的方法。一些着色器需要依次纹理参数,有时这些texutres需要由应用程序生成(例如在Perlin噪声3D纹理的情况下)。
简而言之,没有办法提出一种标准方法来一般性地指定着色器,这些着色器可以完全集成在.x
等文件格式中。您唯一的选择是为您的应用程序提供一些特别的东西。您在问题中建议的方法与任何方法一样好。