DirectX 12渲染带纹理三角形显示黑色的问题及解决方法
带纹理三角形显示黑色的问题与解决
我尝试渲染带纹理的三角形,但结果显示为黑色三角形。已关闭背面剔除(Back-face culling),MVP投影功能可正常工作。
将片段着色器中采样纹理的代码替换为直接输出红色(outRGB = float4(1, 0, 0, 1);)时,三角形能正常显示为红色,但无法实现预期的纹理效果。
顶点着色器代码
#pragma vertex VSMain cbuffer MatrixList : register(b0) { float4x4 model; float4x4 view; float4x4 projection; } void VSMain(in float3 inPosition : POSITION, in float2 inUV : TEXCOORD, out float2 outUV : TEXCOORD, out float4 outPosition : SV_Position) : SV_Position { outPosition = mul(projection, mul(view, mul(model, float4(inPosition.xzy, 1)))); outUV = inUV; }
片段着色器代码
#pragma fragment FSMain Texture2D texture : register(t0); SamplerState linearSampler : register(s0); void FSMain(in float2 inUV : TEXCOORD, out float4 outRGB : SV_Target) : SV_Target { outRGB = float4(texture.Sample(linearSampler, inUV).rgb, 1); }
问题解决
将纹理资源视图格式从DXGI_FORMAT_R8G8B8A8_UINT修改为DXGI_FORMAT_R8G8B8A8_UNORM(与交换链格式一致)后,问题解决,三角形可以正常显示纹理。
内容的提问来源于stack exchange,提问作者Kalen Clark
相关产品推荐
相关产品推荐

