У меня возникла проблема при передаче плавающего числа из 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;
С этого момента я не получаю никаких результатов от этого, я не уверен, что я неправильно указываю на это или что-то.
Попробуйте следующее:
Если вы хотите быстро протестировать и настроить шейдеры в различных ситуациях, есть несколько инструментов, которые помогут вам в этом. В сети есть ShaderToy (http://www.shadertoy.com) например. В автономном режиме, позвольте мне порекомендовать один, который я разработал, Tao3D (http://tao3d.sf.net).
GlUniform * должен применяться между glUseProgram (программа) и glUseProgram (0):
1. Используйте шейдер
2. Установить форму
3. Рендер вещи
4. Удалите шейдер
Это потому, что OpenGL должен знать программу, в которую вы отправляете форму.