【发布时间】:2015-12-11 02:27:14
【问题描述】:
为了让大家不必浏览我的实际代码,我试图将我的问题简化为最简单的形式。使用 HLSL 提供的点函数时,我无法产生预期的结果。在我包含的示例中,我希望两个向量的点积为 26。当我运行此代码时,它将始终返回 45。我将此函数放在像素着色器中,并正在使用着色器模型 2 进行编译。求助! !!
float MyDotProblemSimplified() {
float3 vectorOne = (1.0, 2.0, 3.0);
float3 vectorTwo = (3.0, 4.0, 5.0);
float dotResult = dot(vectorOne, vectorTwo);
//Expected dotResult: 26
//Actual dotResult 45
return dotResult;
}
【问题讨论】:
-
你能不能把它改成
float3 vectorOne = float3(1.0f, 2.0f, 3.0f); float3 vectorTwo = float3(3.0f, 4.0f, 5.0f);试试看?我从来没有见过没有这个向量的作业——“构造函数”,也许它有帮助:) -
我在几个论坛上发布了这个问题。我发现我需要像这样创建向量:float3 vectorOne = {1.0, 2.0, 3.0};这解决了我的问题。希望这篇文章可以帮助别人。