Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/138.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ DirectX背景图像_C++_Directx - Fatal编程技术网

C++ DirectX背景图像

C++ DirectX背景图像,c++,directx,C++,Directx,我试图按照我的3D directx书中的教程进行一些修改。我遇到的问题是,我想画一个图像,但无法让它工作。这个例子使用的是相机,因为它基于一个小游戏,但我只想加载图像,而不需要任何奇特的相机变换。(按原样绘制图像,无需调整大小+alpha混合) 这是我的代码,应该包含相关部分 h .cpp 编辑:差点忘了: #define ReleaseCOM(x) { if(x){ x->Release(); x = 0; } } 调用函数“Begin”时,应该使用D3DXSPRITE_ALPHABL

我试图按照我的3D directx书中的教程进行一些修改。我遇到的问题是,我想画一个图像,但无法让它工作。这个例子使用的是相机,因为它基于一个小游戏,但我只想加载图像,而不需要任何奇特的相机变换。(按原样绘制图像,无需调整大小+alpha混合)

这是我的代码,应该包含相关部分

h

.cpp

编辑:差点忘了:

#define ReleaseCOM(x) { if(x){ x->Release(); x = 0; } }

调用函数“Begin”时,应该使用D3DXSPRITE_ALPHABLEND而不是D3DXSPRITE_DONOTMODIFY_RENDERSTATE,指定D3DXSPRITE_ALPHABLEND并不意味着必须使用alpha blend,如果不调用Screen::onResetDevice(),alpha blend将无法工作,因此D3DXSPRITE_ALPHABLEND此处只是一个使“Begin”工作的参数。如果在调用函数“Begin”时不想指定任何标志,可以将0传递给它

 m_Sprite->Begin(0); 
 m_Sprite->Draw(m_BGImage, 0, &D3DXVECTOR3(256.0f, 256.0f, 0.0f), 0, D3DCOLOR_XRGB(255, 255, 255));
 m_Sprite->Flush();
 m_Sprite->End();

参考资料:

不太熟悉DX,因此如果这不符合标准,我深表歉意,但有一件事可能值得研究:如果您没有进行任何对象到视图的转换,则对象是相对于视图空间定义的。。这意味着您通常需要使用Z偏移来定义它,以便它实际上位于视图平锥中,否则它将被剔除。例如,如果您的近剪裁平面位于z=1,则以视图空间原点为中心的半个单位立方体将不会渲染。因为在接下来的视图日中,我甚至还没有接近带编译器的pc,所以我无法对其进行测试,但我一回来就会进行测试。
#define ReleaseCOM(x) { if(x){ x->Release(); x = 0; } }
 m_Sprite->Begin(0); 
 m_Sprite->Draw(m_BGImage, 0, &D3DXVECTOR3(256.0f, 256.0f, 0.0f), 0, D3DCOLOR_XRGB(255, 255, 255));
 m_Sprite->Flush();
 m_Sprite->End();