【问题标题】:Processing unable to read uniform variable from GLSL shader file处理无法从 GLSL 着色器文件中读取统一变量
【发布时间】:2015-01-26 14:48:28
【问题描述】:

我试图将一个值从 Processing 传递到 GLSL 着色器文件,但 Processing 产生并错误它没有读取我已经在着色器文件中声明的统一浮点数。但是,Processing 确实读取了我声明的其他统一浮点数。以下是我程序中的部分代码。

GLSL 着色器文件:

#ifdef GL_ES
precision mediump float;
precision mediump int;
#endif

varying vec2 surfacePosition;
const float checkSize = 20.0;

uniform float mouseX;
uniform float mouseY;
uniform float size;
uniform float time;

void main()
{
    // other codes
}

处理:

void draw()
{
    background(255);
    myShader.set("mouseX", map(mouseX, 0, width, 0 , 200));
    myShader.set("mouseY", map(mouseY, 0, height, 200, 0));
    myShader.set("counter", myCounter);
    myShader.set("size", 600);
    shader(myShader);
    translate(width/2, height/2);
    shape(sphere);
    myCounter += 0.05;
}

处理产生以下错误消息:

The shader doesn't have a uniform called "size"

处理成功地读取了统一变量mouseXmouseYtime,但不是size。为什么会这样?

【问题讨论】:

    标签: glsl processing


    【解决方案1】:

    我猜 '600' 是作为整数值处理的。尝试手动将其转换为浮动。这应该可以解决您的问题。

    另一个问题可能是您当前没有使用变量“size”。然后编译器只是从你的着色器中删除制服。

    如果不知道着色器中的代码,很难解决问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-24
      • 2021-08-01
      • 2021-06-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多