#android #opengl-es #opengl-es-2.0
#Android #opengl-es #opengl-es-2.0
Вопрос:
Android OpenGL ES 2.0, я привязываю растровое изображение и растровое изображение карты глубины к fragment_shader.glsl
,
precision mediump float;
uniform sampler2D sDepth;
uniform sampler2D sTexture;
uniform float time;
varying vec2 varyTexCoord;
void main() {
vec4 depth=texture2D(sDepth, varyTexCoord);
gl_FragColor=texture2D(sTexture, varyTexCoord);
}
sTexture
: исходное растровое изображение
sDepth
: карта глубины (ARGB_8888, 0 ~ 255, 0: далеко 255: близко)
vertex_shader.glsl
attribute vec4 vPosition;
attribute vec2 vTexCoord;
uniform mat4 vMatrix;
varying vec2 varyTexCoord;
void main() {
gl_Position = vPosition;
varyTexCoord = vTexCoord;
}
теперь я хочу создать эффект параллакса: в соответствии со значением глубины резкости, увеличьте изображение, увеличение ближней области выше, чем у дальней области, создавая эффект параллакса.
Можете ли вы дать нам несколько идей? Спасибо.
Ответ №1:
- Создайте сетку на основе обычной сетки, скажем, 10×10 в (x, y) пространстве.
- Установите координату z из карты глубины.
- Создайте uv-координаты.
- Визуализируйте сетку с вашей цветной текстурой и используйте gl_position = projectionMatrix * scale * vertex;
- Попробуйте разные размеры сетки, чтобы найти лучший.