繁体   English   中英

Android OpenGL ES 2.0:如何使用深度 map 缩放纹理?

[英]Android OpenGL ES 2.0:How to zoom texture with depth map?

Android OpenGL ES 2.0, I bind bitmap and depth map bitmap to 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 :原装bitmap

sDepth : 深度图(ARGB_8888, 0~255, 0:far 255:near)

vertex_shader.glsl

attribute vec4 vPosition;
attribute vec2 vTexCoord;
uniform mat4 vMatrix;

varying vec2 varyTexCoord;

void main() {
    gl_Position = vPosition;
    varyTexCoord = vTexCoord;
}

现在我要做视差效果:根据景深值,放大图像,近处放大比远处放大,产生视差效果。 你能给我们一些想法吗? 谢谢你。

  1. 在常规网格的基础上创建一个网格,假设在 (x,y) 空间中为 10x10。
  2. 从深度 map 设置 z 坐标。
  3. 制作 uv 坐标。
  4. 用你的颜色纹理渲染网格,并使用 gl_position = projectionMatrix * scale * vertex;
  5. 尝试不同的网格尺寸以找到最佳尺寸。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM