Android OpenGL ES 2.0:如何使用深度图缩放纹理?
Android OpenGL ES 2.0:How to zoom texture with depth map?
Android OpenGL ES 2.0,我把bitmap和depth map bitmap绑定到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;
}
现在想做视差效果:根据景深值,放大图像,近区放大比远区放大,产生视差效果。
你能给我们一些想法吗?谢谢。
- 在规则网格的基础上创建一个网格,假设在 (x,y) 中为 10x10 space。
- 根据深度图设置 z 坐标。
- 制作uv坐标。
- 用你的颜色纹理渲染网格,并使用 gl_position = projectionMatrix * scale * vertex;
- 尝试不同尺寸的网格以找到最佳尺寸。
Android OpenGL ES 2.0,我把bitmap和depth map bitmap绑定到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;
}
现在想做视差效果:根据景深值,放大图像,近区放大比远区放大,产生视差效果。 你能给我们一些想法吗?谢谢。
- 在规则网格的基础上创建一个网格,假设在 (x,y) 中为 10x10 space。
- 根据深度图设置 z 坐标。
- 制作uv坐标。
- 用你的颜色纹理渲染网格,并使用 gl_position = projectionMatrix * scale * vertex;
- 尝试不同尺寸的网格以找到最佳尺寸。