我嘗試在屏幕上繪制一個紅色矩形,但在編譯后我的屏幕變成藍色。有人可以幫助我了解我做錯了什么嗎?我是 GLSL 的新手#version 330out vec4 outColor;void drawRectangle(in vec2 pixelXY){ if(pixelXY.x > 60 && pixelXY.x < 200 && pixelXY.y > 60 && pixelXY.y < 200) { outColor = vec4(1.0, 0.0, 0.0, 0.0); }}void main(){ outColor = vec4(0.0, 0.0, 1.0 , 0.0); drawRectangle(vec2(60,100));}
1 回答

胡子哥哥
TA貢獻1825條經驗 獲得超6個贊
您drawRectangle使用常量實際參數調用函數
drawRectangle(vec2(60,100));
請注意,這與以下內容相同:
if (60 > 60 && 60 < 200 && 100 > 60 && 100 < 200)
{
outColor = vec4(1.0, 0.0, 0.0, 0.0);
}
要解決此問題,您必須將實際參數更改為當前正在處理的片段的窗口坐標。見gl_FragCoord:
drawRectangle( gl_FragCoord.xy );
注意,片段著色器對每個片段執行一次,內置的統一變量gl_FragCoord包含當前片段的坐標。
添加回答
舉報
0/150
提交
取消