【问题标题】:Android OpenGL ES 2.0:How to zoom texture with depth map?Android OpenGL ES 2.0:如何使用深度图缩放纹理?
【发布时间】:2020-12-17 00:03:45
【问题描述】:

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: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;
}

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

【问题讨论】:

    标签: android opengl-es opengl-es-2.0


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

    【讨论】:

      猜你喜欢
      • 2012-04-08
      • 1970-01-01
      • 2023-03-20
      • 2011-05-19
      • 2016-08-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多