我在通过使用统一输入到我的顶点着色器时从c++传递浮点数时遇到问题。该 float 仅是为了不断增加自身。

在我的标题中

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;

从这里开始,我没有从此获得任何结果,我不确定是否错误地指向了它或其他东西。

最佳答案

请尝试以下操作:

  • 我假设您显示的GLSL程序不是完整的代码,因为没有main或任何内容。
  • 输入功能
  • 时检查程序是否已设置
  • 存储glGetUniformLocation的输出并检查它是否正常
  • 在之前/之后调用glGetError以查看GL是否检测到问题。

  • 如果要在各种情况下快速测试和设置着色器,有几种工具可以帮助您。在线上有例如ShaderToy(http://www.shadertoy.com)。脱机,让我推荐我开发的一个工具Tao3D(http://tao3d.sf.net)。

    10-08 11:05