非常非常新的DirectX,试图搞乱本教程,我学会了如何工作。弄清楚它绘制的三角形的颜色是什么,我发现它非常奇怪。
这就是为什么: - 当我改变变量(这是一个浮点数)时,根本就是左边的数字,没有发生。我可以将其更改为40000000或4或3或400000000或10或9个NOTHING更改。
- 当我将变量从正变为负时,反之亦然,它会改变颜色。
- 当我将任何变量更改为0.0f时,它会改变颜色。
所以我真的想弄清楚这个的逻辑,我的意思是,变量数怎么不影响它的颜色值?这里有一些代码可以让我的问题更有意义。
SimpleVertexShader.hlsl
float4 SimplePixelShader(PixelShaderInput input) : SV_TARGET
{
// Draw the entire triangle yellow.
return float4(4.0f, 0.0f, 2.0f, 6.0f);
}
Main.cpp的
auto vertexShaderBytecode = reader->ReadData("SimpleVertexShader.cso");
ComPtr<ID3D11VertexShader> vertexShader;
DX::ThrowIfFailed(
m_d3dDevice->CreateVertexShader(
vertexShaderBytecode->Data,
vertexShaderBytecode->Length,
nullptr,
&vertexShader
)
);
答案 0 :(得分:4)
return float4(4.0f, 0.0f, 2.0f, 6.0f);
您正在返回像素颜色,并且颜色的有效输入范围是[0.0 - 1.0],如果该值超出此范围,它将被截断到此范围
for values < 0.0, it was treated as 0
for values > 1.0, it was treated as 1
这就是为什么在更新大于1.0的值时没有看到任何变化的原因