1
我是新來的OpenGL,並試圖找出我的片段着色器。我在窗口中繪製了一個矩形,並且我想爲其上半部分着色爲不同的顏色(如藍色),而不用硬編碼像素的高度。GLSL中用於OpenGL的窗口大小?
1000的窗口高度,在我的片段着色器,我有:
void main(){
if((gl_FragCoord.y) > 500)
{
color = vec3(.3, .3, 1);
}
else
{
color = fragmentColor;
}
哪個顏色的矩形藍色的上半部分。但是如果我想從片段着色器中獲取窗口高度,而不是僅使用500個像素?我初始化了 uniform vec2 windowSize
,並試圖使用glUniform1i()
將窗口高度放在這個變量中,但我不知道如何。
您需要使用'glUniform2f'來設置'windowSize',因爲它是'vec2'。 – rwols
我怎樣才能在我的片段着色器中打電話?它是glUniform2f(windowSize,?,?)?我應該如何通過其他兩個論點? – 3PA
您首先通過['glGetUniformLocation'](https://www.khronos.org/registry/OpenGL-Refpages/es3.0/html/glGetUniformLocation.xhtml)獲取統一變量的「句柄」,然後使用該句柄「handle」作爲「glUniform2f」的第一個參數。 「glUniform2f」的第二個和第三個參數可以是任何你想要的。 – rwols