今天在两处出现了这个问题:
float3 ambient = gMtrl.ambient*gSpotLight.ambient;//环境光
oPosLight = mul( oPosW, gViewToLightProj );
检查了一下发现是维度问题..ambient是float3类型,gMtrl.ambient是float4类型;oPosLight是float4类型,oPosW是float3类型,只需要把gMtrl.ambient*gSpotLight.ambient的结果取前三维(.rgb或.xyz),oPosW换成思维的(float4(三位向量,1.0f))。
正确代码如下:
float3 ambient = (gMtrl.ambient*gSpotLight.ambient).rgb;//环境光
oPosLight = mul( float4(oPosW,1.0f), gViewToLightProj );
HLSL错误:x3206 implicit trucation of vector type
最新推荐文章于 2024-04-14 21:23:51 发布
本文解决了在光照计算及坐标转换中遇到的维度不匹配问题。通过将float4类型的变量转换为float3类型,以及将float3类型的坐标点转换为float4类型,确保了计算的正确性。

1万+

被折叠的 条评论
为什么被折叠?



