加载 .bmp 文件并将其渲染为 DirectX 11 中的背景
Loading a .bmp file and rendering it as the background in DirectX 11
我花了一个下午查看有关上下文/表面的文档并遵循了很多指南,但我只是不明白这是如何完成的。
我只想使用位图(已加载)并将其作为背景放入我的场景中。
听说要先用surface再画,但是完全不知道怎么获取surface,怎么给它赋位图。
感谢任何帮助。
是的,一种方法是使用 Surface,但我会推荐这种方法
不知道你是怎么载入位图的,总之你可以这样用位图做背景
//Make texture object
LPDIRECT3DTEXTURE9 m_myBitmapTexture;
// During Initialization, Load texture from file
if(FAILED(D3DXCREATETEXTUREFROMFILE(device,"filepath\file.bmp", 0, 0, 0, D3DMFT_UNKNOWN, D3DPOOL_DEFAULT, D3DX_DEFULT, D3DX_DEFAULT, 0x00000000, NULL, NULL, *m_myBitmapTexture)))
return E_FAIL;
// During Rendering, set texture
device->SetTexture(0, m_myBitmapTexture);
device->SetStreamSource(0, yourBuffer, 0, size(YourBufferStruct));
device->SetFVF(yourTextureFVF); // Setting flexible vertex format
device->DrawPrimitive(topologyType, startindex, totalIndex);
你只需要确保你的缓冲区应该有纹理坐标,你的着色器也应该有
struct YourBufferStruct
{
D3DXVECTOR3 position;
D3DXVECTOR2 textureCoord;
}
// Define your flexible vertex format, i am just adding position and texture,
//well you can add color, normal whatever extra you want
#define yourTextureFVF (D3DFVF_XYZ | D3DFVF_TEX1)
现在也将纹理坐标添加到着色器
更多详情可以参考这个linkhttps://msdn.microsoft.com/en-us/library/windows/desktop/bb153262(v=vs.85).aspx
我花了一个下午查看有关上下文/表面的文档并遵循了很多指南,但我只是不明白这是如何完成的。
我只想使用位图(已加载)并将其作为背景放入我的场景中。
听说要先用surface再画,但是完全不知道怎么获取surface,怎么给它赋位图。
感谢任何帮助。
是的,一种方法是使用 Surface,但我会推荐这种方法
不知道你是怎么载入位图的,总之你可以这样用位图做背景
//Make texture object
LPDIRECT3DTEXTURE9 m_myBitmapTexture;
// During Initialization, Load texture from file
if(FAILED(D3DXCREATETEXTUREFROMFILE(device,"filepath\file.bmp", 0, 0, 0, D3DMFT_UNKNOWN, D3DPOOL_DEFAULT, D3DX_DEFULT, D3DX_DEFAULT, 0x00000000, NULL, NULL, *m_myBitmapTexture)))
return E_FAIL;
// During Rendering, set texture
device->SetTexture(0, m_myBitmapTexture);
device->SetStreamSource(0, yourBuffer, 0, size(YourBufferStruct));
device->SetFVF(yourTextureFVF); // Setting flexible vertex format
device->DrawPrimitive(topologyType, startindex, totalIndex);
你只需要确保你的缓冲区应该有纹理坐标,你的着色器也应该有
struct YourBufferStruct
{
D3DXVECTOR3 position;
D3DXVECTOR2 textureCoord;
}
// Define your flexible vertex format, i am just adding position and texture,
//well you can add color, normal whatever extra you want
#define yourTextureFVF (D3DFVF_XYZ | D3DFVF_TEX1)
现在也将纹理坐标添加到着色器
更多详情可以参考这个linkhttps://msdn.microsoft.com/en-us/library/windows/desktop/bb153262(v=vs.85).aspx