是否可以使用某种颜色渲染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
谢谢!
答案 0 :(得分:1)
首先,并非所有硬件都支持D3DFMT_A8。
现在假设ID3DXSprite没有占用过多的管道,那么编写像素着色器的简单方法如下:
sampler2D input : register(s0);
float4 pixelShader(float2 uv : TEXCOORD) : COLOR
{
return tex2D( input , uv.xy).aaaa;
}
着色器只是读取纹理中的值,并在所有通道中调整它。