簡體   English   中英

在片段着色器 GLSL 中共享變量

[英]Sharing variables in fragment shader GLSL

我試過這個片段着色器。

但結果出乎意料。

void main() {
    float test;
    if(gl_FragCoord.x == 300.0) {
        test = 1.0;
    }

    gl_FragColor = vec4(test, 1, 1, 1);
} 

該程序使所有片段變為白色。 但這是出乎意料的,因為着色器為每個片段異步運行。

請注意,顏色取決於if塊中的測試值。 例如,如果我將其更改為 0,它將用淺藍色填充所有碎片。

我原以為它只會用 x=300 填充片段。 我該怎么做?

此代碼表現出未定義的行為,因為您從未初始化test

此外,即使你這樣做了,條件本身也幾乎肯定永遠不會得到滿足。 gl_FragCoord不需要是 integer,所以你正在做浮點相等。 系統不需要提供精確的值,所以這樣的相等性測試幾乎肯定會失敗。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM