我是OpenGL的新手,并试图找出我的片段着色器。我的窗口中画了一个矩形,我想将它的上半部分用不同的颜色(比如蓝色),而不用硬编码像素的高度。
窗口高度为1000,在我的片段着色器中,我有:
heroku buildpacks:set heroku/python
矩形蓝色的上半部分为哪种颜色。但是如果我想从片段着色器中获取窗口高度而不是仅仅使用500像素呢?我初始化了
void main(){
if((gl_FragCoord.y) > 500)
{
color = vec3(.3, .3, 1);
}
else
{
color = fragmentColor;
}
,我正在尝试使用uniform vec2 windowSize
将窗口高度放在此变量中,但我不知道如何。
答案 0 :(得分:0)
您描述的情况只是请求顶点着色器中的out float
变量设置为矩形的当前Y坐标,该变量与X坐标以及您拥有的其他任何顶点属性一起传递通过OpenGL到你的着色器。
当它到达片段着色器(类型为in float
)时,它会被插值,最有可能在[–1; 1]
范围内。因此,要将上半部分涂成蓝色,您只需要检查该变量是否为正。
N.B。:如果您在3.x之前使用GLSL,out float VARIABLE_NAME
和in float VARIABLE_NAME
必须都是varying float VARIABLE_NAME
。