改变三角形的颜色

时间:2014-03-23 22:01:27

标签: c++ directx shader directx-11

非常非常新的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
                )
            );

1 个答案:

答案 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的值时没有看到任何变化的原因