Всем доброго времени суток. Появилась такая проблема: Нужно динамически менять текстуру для примитива. Т.е. предварительно есть 4-5 текстур. Нужно во время работы программы изменять текстуры у примитива.
Все найденные мною мануалы показывают применение текстур на примере VAO, где текстура лежит в массиве с координатами/цветами и прочим. Но в таком случае смещение задаётся сразу и статически.
Подскажите пожалуйста, какая из идей может быть верной?
1) Прописать в массив сразу все координаты всех текстур. Т.е. помимо 9-ти координат примитива (пока пробую на обычном треугольнике) будут ещё 6 * 4 координат для текстур. И затем, в процессе работы программы, передавать в некую функцию аргумент, который будет значить текущее смещение для текущей текстуры.
2) С помощью uniform загружать не только текстуру, но и координаты текстуры в фрагментный шейдер. Тут встаёт вопрос, как это сделать? Это было бы значительно проще, по-моему. Но фрагментый шейдер описывает отдельные фрагменты, и координаты текстуры загружаются в формате vec2. Я понимаю, что в таком случае я не смогу загрузить сразу вес массив из 6-ти координат, и надо передавать каждые 2 координаты отдельно. Пробовал так:
GLuint texLoc = glGetUniformLocation(ourShader.Program, "tex");
GLuint texCoord = glGetUniformLocation(ourShader.Program, "texcoord");
for (int j = 0; j < 3; j++)
{
glUniform2f(texCoord, vectorOfPrimitives[i].texcoord[j][0], vectorOfPrimitives[i].texcoord[j][1]);
}
glUniform1i(texLoc, texture);
И шейдер:
#version 330 core
in vec2 TexCoord;
out vec4 color;
uniform vec4 ourColor;
uniform vec2 texcoord;
uniform sampler2D ourTexture;
void main(){
color = texture(ourTexture, TexCoord) * ourColor;
}
Это неправильно, но как ещё можно загрузить данные для каждой координаты в шейдер? И возможно ли это?
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Скажите можно ли все библиотеки линковать динамически (то есть с ключем /MD), а стандартную библиотеку - статически (/MT)? Статическая стандартная...
Доброго всем времени суток! Хочу уточнить, правильно ли я понимаю теориюИмеем такое:
Знаю есть библиотека загрузчик 3d моделей AssimpЕсть ли альтернатива
Как компилировать проект на C++, находясь в *h файле? Это жутко неудобно, сделав изменения в заголовочном файле, переключаться на какой-либо...