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

标签 java glsl fragment-shader

我尝试在屏幕上绘制一个红色矩形,但编译后我的屏幕变成蓝色。有人可以帮助我理解我做错了什么吗?我是 GLSL 新手

#version 330

out 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));
}

最佳答案

您可以使用常量实际参数调用函数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 );

注意,Fragment Shader对每个片段和内置统一变量 gl_FragCoord 执行一次包含当前片段的坐标。

关于java - glsl 片段着色器矩形不会显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53021466/

相关文章:

iphone - iPhone 上事件顶点着色器采样器的实现限制

opengl - GLSL-将属性绑定(bind)到语义

glsl - GLSL 片段着色器中的曲线旋转

opengl-es - OpenGL ES 中的标识符、初始化和局部变量

java - tomcat没有显示在eclipse中

java - 使用 Maven 进行 Vaadin 项目

java - Ant 和类路径

glsl - GLSL中的printf?

java - 如何使用 GPU Video-android 在视频上同时获取水印和过滤器?

java.lang.noClassDefFoundError : com/itextpdf/text/element on a Java Applet