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