1

我正在使用directx9 编写一个小型图形程序,该程序从.x 文件中导入一些使用blender 创建的模型文件。到现在为止还挺好。

模型具有具有纹理的材料,获取纹理名称并正确渲染对象很简单,但是我想在某些材料上使用不同的效果(着色器)文件,但我找不到任何嵌入信息的方法关于在 .x 文件中的模型中使用什么着色器。

我的最佳想法是查看我的 d3d9 应用程序中的纹理文件名,并将纹理名称查找表硬编码为效果文件。但这似乎并不优雅,也意味着我最终会复制和重命名纹理,以便我可以将相同的纹理与不同的着色器一起使用。

我觉得我一定错过了一种更简单的方法来做到这一点,有什么建议吗?

4

1 回答 1

1

与纹理图像文件不同,指定着色器程序可能非常复杂。您需要着色器文本及其所需参数的规范,以及让读取文件的人知道为参数设置哪些值以及如何设置的方法。一些着色器反过来需要纹理参数,有时这些纹理需要由应用程序生成(例如在 Perlin 噪声 3D 纹理的情况下)。
简而言之,没有办法想出一个标准的方法来通用地指定可以完全集成在文件格式中的着色器,例如.x. 您唯一的选择是为您的应用程序提供一些特别的东西。您在问题中建议的方法与任何方法一样好。

于 2009-07-26T14:58:26.610 回答