对 DirectX 非常非常陌生,试图把本教程弄得一团糟,我必须了解它是如何工作的。弄清楚是什么控制了它绘制的三角形的颜色,我发现它非常奇怪。
原因如下: - 当我改变变量(这是一个 float )左边的数字时,什么都没有发生。我可以将它更改为 40000000 或 4 或 3 或 400000000 或 10 或 9 没有任何变化。
-当我将变量从正变为负时,反之亦然,它确实改变了颜色。
-当我将任何变量更改为 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
)
);
最佳答案
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 的值时你没有看到任何变化
关于c++ - 改变三角形的颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22597701/