将uniform float传递给顶点着色器opengl

时间:2015-05-30 02:46:03

标签: c++ opengl vertex uniform

我在使用uniform in到顶点着色器时从c ++传递一个浮点数时遇到了问题。这个浮动只是为了不断增加自己。

在我的标题中我有

float pauto;
void pautoupdate(int program);

现在在我的cpp

void World::pautoupdate(int program)
{
    pauto += 0.1f;

    glUniform1f(glGetUniformLocation(program, "pauto"), pauto);
}

在我的顶点着色器中,它被声明为,它只是递增x值

uniform float pauto;

terrx = Position.x;
terrx += pauto;

从这里起,我没有得到任何结果这样做,我不确定我是否错误地指向它或什么。

2 个答案:

答案 0 :(得分:2)

尝试以下方法:

  1. 我认为你展示的GLSL程序不是整个代码,因为没有主要或任何东西。
  2. 输入功能
  3. 时检查程序是否已设置
  4. 存储glGetUniformLocation的输出并检查确认
  5. 在之前/之后调用glGetError以查看GL是否检测到问题。
  6. 如果您想在各种情况下快速测试和设置着色器,可以使用多种工具来帮助您。在线,有ShaderToy(http://www.shadertoy.com)。离线,让我推荐一个我开发的,Tao3D(http://tao3d.sf.net)。

答案 1 :(得分:0)

应在glUseProgram(程序)和glUseProgram(0)之间应用GlUniform *:

1.使用着色器
2.设置制服
3.Render的东西
4.移除着色器

这是因为OpenGL必须知道你发送制服的女巫节目。