我尝试使用像素着色器来显示图像。我已经四处寻找有关如何做到这一点的信息,我发现了这个:
https://msdn.microsoft.com/en-us/library/windows/desktop/bb219690%28v=vs.85%29.aspx
这是来自那里的hlsl脚本:
texture MyTexture;
sampler MySampler =
sampler_state
{
Texture = <MyTexture>;
MinFilter = Linear;
MagFilter = Linear;
AddressU = Clamp;
AddressV = Clamp;
};
float4 TextureLookupPS( float2 vTexCoord : TEXCOORD0 ) : COLOR
{
return tex2D( MySampler, vTexCoord );
}
对于主要功能,我想我这样做:
PS_OUTPUT psmain(in VS_OUTPUT In)
{
PS_OUTPUT Out;
Out.Color = tex2D(mySample, In.texture);
return Out;
};
在C ++中,如何传递MyTexture的值? 我是否使用D3DXCreateTextureFromFile加载IDirect3DTexture9 *?如何将这些信息提供给像素着色器?
答案 0 :(得分:1)
我知道这个问题是2个月大,但我会在这里留下参考:
创建ID3DXEffect
后:
D3DXHANDLE texHandle = m_pShader->GetParameterByName(0, "MyTexture")
这将为您提供着色器纹理的句柄,以便您可以在渲染函数中设置它:
m_pEffect->SetTexture(texHandle, m_pTexture);
m_pEffect
是您的ID3DXEffect
指针。
注意:m_pTexture
是LPDIRECT3DTEXTURE9
对象,您可以像这样初始化:
D3DXCreateTextureFromFileA(m_pDevice, "mytexture.bmp", &m_pTexture)
我根据用户zdd对此进行了回答:https://stackoverflow.com/a/18754193/2240519