使用DirectX 11读取.tga

时间:2013-07-20 12:06:15

标签: c++ directx tga

因为我工作了几天我需要使用directX 11在几种文件格式上绘制纹理。经过google搜索后,我没有找到该怎么做。

我正在使用D3DX11CreateShaderResourceViewFromFile来加载.dds和.png文件,但我在其他地方读到了.tga不再受支持了。我读了一些关于D3DLOCKED_RECT的东西来设置纹理的每个像素,并读取.tga文件来了解这些像素,但那是针对directX 9的。

任何帮助或提示?提前谢谢。

1 个答案:

答案 0 :(得分:0)

//注意:我不使用D3D11

MSDN page for D3DX11CreateShaderResourceViewFromFile表示有DirectXTex库,应该能够使用LoadFromTGAFile例程加载* .tga文件。你应该试一试。如果它不适合你,你将不得不编写自己的纹理加载器。 (因为可以在D3D9中为你的纹理加载器,它应该可以在D3D11中做同样的事情)。 * .tga格式为documented somewhere,许多初学者教程专门处理在没有第三方库的情况下加载此特定格式。

两个建议:

  1. 下次有疑问时,请阅读文档。
  2. 请勿查看* .png格式。这种格式加载速度非常慢(jpeg更快,未压缩bmp更快,dds更快)并且很可能不适合需要经常加载许多图像的游戏(可以将它用于开始菜单,结束屏幕等)。使用未压缩格式(例如* .tga)或(因为您使用的是directx)使用* .dds格式。您的图像很可能占用额外的磁盘空间,但加载速度会更快。