OPEN GL-从纹理颜色更改顶点位置

问题描述 投票:0回答:1

[我有一个由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 ::

enter image description here

我得到的结果是一个在yy坐标中都增加了1的平面。

我期望的结果是平面的某些顶点在yy坐标中以0-1值递增。

opengl opengl-es textures shader texture-mapping
1个回答
0
投票

我忘记更改对象的顶点数

这是问题,在我解决了之后。

© www.soinside.com 2019 - 2024. All rights reserved.