为了账号安全,请及时绑定邮箱和手机立即绑定

glsl 片段着色器矩形不会显示

glsl 片段着色器矩形不会显示

慕斯709654 2021-12-10 15:37:22
我尝试在屏幕上绘制一个红色矩形,但在编译后我的屏幕变成蓝色。有人可以帮助我了解我做错了什么吗?我是 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包含当前片段的坐标。


查看完整回答
反对 回复 2021-12-10
  • 1 回答
  • 0 关注
  • 120 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信