OPEN GL - изменить положение вершины из цвета текстуры

У меня есть плоскость, сделанная из NURB-поверхности, с множеством вершин, поэтому она может создавать изогнутую поверхность в зависимости от положения вершин (контрольных точек).

Я связываю объект плоскости с двумя различными текстурами, одна - это цветная текстура, которая будет отображаться на объекте, другая - heightMap (черно-белая), которая должна изменять вершину yy положения плоскости в зависимости от белого цвета в соответствующей координате текстуры.

Я знаю, что проблема в моих шейдерах. У меня нет большого опыта работы с OPENGL.

Здесь shader.vert что я использую:

attribute vec3 aVertexPosition;
attribute vec3 aVertexNormal;
attribute vec2 aTextureCoord;

uniform mat4 uMVMatrix;
uniform mat4 uPMatrix;
uniform mat4 uNMatrix;

varying vec2 vTextureCoord;

uniform sampler2D uSampler2;

uniform float heightScale;

void main() {

//change texture coordinates
vec2 texInver=vec2(1.0, -1.0);

vTextureCoord = aTextureCoord*texInver;
//--------------------------

//change vertex position
vec4 filter = texture2D(uSampler2, vTextureCoord);

float offset = filter.r;

vec3 inc = vec3(0.0, offset, 0.0);

gl_Position = uPMatrix * uMVMatrix * vec4(aVertexPosition + inc, 1.0);
//----------------------
}

Поскольку изображение черно-белое, R = G = B. Поэтому я проверяю только filter.r

И мой shader.frag является:

#ifdef GL_ES
precision highp float;
#endif

varying vec2 vTextureCoord;

uniform sampler2D uSampler;

void main() {
gl_FragColor = texture2D(uSampler, vTextureCoord);
}

Это карта высот (.jpg):

введите описание изображения здесь

В результате я получаю плоскость, все увеличивается на 1 в yy координат.

В результате я ожидаю, что НЕКОТОРАЯ вершина плоскости будет увеличена на значение 0-1 в yy координат.

0 ответов

Я забыл изменить количество вершин объекта

Это была проблема, после того как я ее решил.

Другие вопросы по тегам