c++ - 如何使用纹理和 MeshConvert.exe 构建 SdkMesh?

标签 c++ winapi visual-studio-2015 directx-11 direct3d

我需要构建一个类似于 DirectX SDK 附带的 Tiny.sdkmesh 的 sdkmesh 文件。

我有网格文件 base.obj

我在 textures/base.jpg

中有纹理

我正在使用以下命令行运行 meshconvert.exe

meshconvert.exe base.obj -n -op -tb

它生成了一个base.sdkmesh但是没有纹理文件

我尝试使用 paint.net 将 jpeg 纹理保存为 dds 文件

当我渲染我的模型时,它全黑了。但是当我渲染 tiny.sdkmesh 模型时,它出现了纹理。

有人可以帮助解释这个未记录的工具和过程吗?

谢谢,

最佳答案

meshconvert 的最新版本是 DirectXMesh 的一部分, 所以除非你特别需要旧的 .X 文件支持(你不需要,因为你使用的是 Wavefront OBJ)你应该使用那个而不是 legacy DirectX SDK .

meshconvert 的默认行为是从 Wavefront OBJ 的 mtl 文件中获取纹理文件名,并将它们嵌入为 .dds 版本相同的文件(因此 texture.jpg 存储为 texture.dds)。您可以使用 DirectXTex 中的 texconv 工具生成 dds项目。您还可以使用 -nodds 开关告诉最新的 meshconvert 保留文件名。

您还可以使用 DirectX SDK Samples Content Exporter 从 Autodesk FBX 文件创建 SDKMESH 文件.该导出器还将“烹制”纹理作为导出过程的一部分。

如果您有一个 sdkmesh 并且您正在尝试找出其中包含的纹理引用,请尝试使用 sdkmeshdump控制台实用程序以查看其中的内容。

Disclaimer: SDKMESH is really only intended as a learning format used in DirectX samples. You can use it in your project, but you will most likely want to develop your own runtime container format if your engine/project becomes sophisticated. It mostly has the value of existing, so YMMV.

参见 DirectXMesh wikiDirectX SDK Content Exporter wiki

If you are using DXUT, you should use the latest version from GitHub. sdkmesh is also supported by the DirectX Tool Kit for DX11 and DX12

关于c++ - 如何使用纹理和 MeshConvert.exe 构建 SdkMesh?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50711755/

相关文章:

c - 如何在win32中设置UI控件的Tab顺序?

C++ 通过引用和转换传递对象

c - 为什么使用IOCP?

c++ - 重新分配指针时出现段错误

c++ - 当我调整窗口大小时,常用控件未正确绘制

visual-studio - 如何解决构建错误: Unable to copy file.访问路径被拒绝

visual-studio - 自定义“灯泡”快速操作规则

xamarin - Visual Studio 2015 + Xamarin > 在运行应用程序之前选择一个有效的设备

c++ - 我可以在用 C++ 构造静态本地时访问它吗?

c++ - Box2D:断言失败且未加载 Wntdll.pdb