我对DirectX比较陌生,必须处理现有的C ++ DX9应用程序。该应用程序跟踪相机图像并显示一些DirectDraw(即2d)内容。相机的纵横比为4:3(始终),屏幕未定义。
我想加载纹理并将此纹理用作蒙版,因此仅在纹理的蒙版区域内完成内容的跟踪和显示。因此,我想加载一个与相机图像尺寸完全相同的纹理。
我已经完成了加载纹理的所有步骤,但是当我调用GetDesc()
时,Width
结构的字段Height
和D3DSURFACE_DESC
具有更大的功能-of-2尺寸。我并不关心用于纹理的实际内存是否针对显卡进行了优化,但我没有找到任何方法来获取硬盘上原始图像文件的尺寸。
我这样做(并且做了,但没有成功)搜索可能只将图像加载到计算机RAM中(不需要图形卡)而不向代码添加新的依赖项。否则我将不得不使用OpenCV(在跟踪时可能是一个好主意),但目前我仍然试图避免包含OpenCV。
感谢您的提示, 诺贝特
答案 0 :(得分:3)
D3DXCreateTextureFromFileEx参数3和4为
D3DX_DEFAULT_NONPOW2.
之后,您可以使用
D3DSURFACE_DESC Desc;
m_Sprite->GetLevelDesc(0, &Desc);
取高度&宽度。
答案 1 :(得分:1)
D3DXGetImageInfoFromFile可能就是您要找的。 p>
我假设您正在使用D3DX,因为我不认为Direct3D会自动调整任何纹理的大小。