如何将D3DFMT_A8纹理渲染为颜色?

时间:2010-11-24 14:10:36

标签: graphics directx textures

是否可以使用某种颜色渲染D3DFMT_A8纹理?像这样:

D3DXCreateTexture (pDevice, 128, 128, 0, D3DFMT_A8, D3DPOOL_MANAGED, &pTexture)
...
pSprite->Draw (pTexture, NULL, NULL , NULL, 0, pos, 0xffff0000);  // red

D3DXCreateTexture (pDevice, 128, 128, 0, D3DFMT_A8, D3DPOOL_MANAGED, &pTexture) ... pSprite->Draw (pTexture, NULL, NULL , NULL, 0, pos, 0xffff0000); // red

谢谢!

1 个答案:

答案 0 :(得分:1)

首先,并非所有硬件都支持D3DFMT_A8。

现在假设ID3DXSprite没有占用过多的管道,那么编写像素着色器的简单方法如下:

sampler2D input : register(s0); 
float4 pixelShader(float2 uv : TEXCOORD) : COLOR 
{ 
    return tex2D( input , uv.xy).aaaa; 

}

着色器只是读取纹理中的值,并在所有通道中调整它。