繁体   English   中英

在OpenGL ES 2.0或3.0中生成深度纹理

Generate a depth texture in OpenGL ES 2.0 or 3.0

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我有一个场景要在Android中使用OpenGL ES(使用Java库)进行渲染。 我想将一些效果(例如景深)应用于场景。 我找到了一个不错的bokeh着色器,它需要深度纹理才能完成这项工作。 然后,我需要生成一个深度纹理以传递给着色器。 我花了一天半的时间在互联网上闲逛,试图弄清楚这一点,似乎找不到如何从现有场景生成深度纹理的好例子。 似乎我需要做几遍,可能是使用屏幕外渲染到帧缓冲区,然后从中生成深度纹理,以传递到我的bokeh着色器以实际渲染场景。

如何生成深度纹理? 一个很好的工作示例将不胜感激。

2 个回复

对于任何后期处理效果,您都需要将主场景渲染到FBO,以便可以在后续渲染中使用颜色和深度附件数据。

渲染到深度纹理非常容易。 您只需要将深度纹理绑定到FBO目标即可,例如

glGenFramebuffers(1, &m_fbo);
glBindFramebuffer(GL_FRAMEBUFFER, m_fbo);

glFramebufferTexture2D(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_TEXTURE_2D, m_depth_texture, 0);

PowerVR SDK的RenderToTexture和ShadowMapping演示应具有您需要的所有参考代码:

https://github.com/powervr-graphics/Native_SDK/blob/3.4/Examples/Intermediate/RenderToTexture/OGLES2/OGLES2RenderToTexture.cpp https://github.com/powervr-graphics/Native_SDK/blob/3.4/Examples/Intermediate /ShadowMapping/OGLES2/OGLES2ShadowMapping.cpp

您可以使用gl_FragCoord从片段着色器内部访问每个像素的深度值。 编写一个片段着色器,将深度写入gl_FragColor,如下所示:

gl_FragColor = vec4(gl_FragCoord.z, 0.0, 0.0, 1.0);

使用此片段着色器将场景渲染为纹理,最终将得到深度图。

2 如何在模板,OpenGL ES 3.0中使用深度纹理

我有一个应用程序,我想使用模板遮罩将深度渲染到纹理。 我尝试GL_DEPTH_STENCIL_OES: 创建纹理: 为阴影贴图创建模具遮罩: 使用模板遮罩渲染深度: 执行代码后,屏幕为黑色。 这是意外的,因为我没有将深度渲染到默认的帧缓冲区,而是渲染到了纹理。 ...

4 OpenGL ES 2.0/3.0 中的折射。 大像素纹理

尝试在 OpenGL ES 2.0/3.0 中实现折射。 使用了以下着色器: 顶点着色器: 片段着色器: 加载纹理的方法: 但是纹理是用大像素获得的,例如: 这可能是什么原因? 也许这对于低多边形模型来说是正常的? 似乎纹理太接近了。 注意:多边形越少 - 质量越低。 提前感 ...

5 在OpenGL ES 2.0中,当将FBO与纹理深度缓冲区一起使用时,深度纹理缓冲区不起作用

目前,我正在一个项目中,首先将应用程序渲染到帧缓冲对象(FBO),然后使用OpenGL ES 2.0中的FBO颜色和深度纹理附件来渲染回应用程序。 现在,使用颜色缓冲区可以很好地呈现多个应用程序。 当我尝试使用深度纹理缓冲区中的深度信息时,它似乎无法正常工作。 我尝试通过使用纹理坐 ...

6 OpenGL ES 3.0上的OpenGL ES 2.0着色器

我在使用OpenGL ES 3.0的Android设备上编译“工作”着色器时遇到问题。 我的着色器在本机使用OpenGL ES 2.0的设备上运行良好(它是针对该版本编写的)。 我正在尝试在使用OpenGL ES 3.0且无法编译的设备上“未编辑”着色器。 我正在使用GLES20.gl ...

7 移动纹理OpenGL ES 2.0

我正在尝试在OpenGL ES 2.0中实现8列8行的精灵 我出现了第一个图像,但是我不知道如何在OpenGL ES 2.0中转换纹理矩阵,相当于我正在寻找的OpenGL 1.0中的代码 这是我正在使用atm的矩阵 我的顶点着色器 我的片段着色器: ...

8 OpenGL ES 2.0衍生纹理

我有一个基于OpenGL ES 2.0的iPhone应用程序,我遇到了一些OpenGL ES问题。 我试图编译一个片段着色器,它计算/显示输入纹理的衍生物。 我的片段着色器代码是: 但是,这无法编译。 如果我拿出dFdX,它编译得很好。 有人对这个有经验么? 我最终还想 ...

9 圆形的OPENGL ES 2.0纹理

试图将纹理加载到一个圆形中,但是我遇到了很大的麻烦。 这是原始纹理: 原始纹理 这是代码: 我得到这样的东西: 我的结果 我究竟做错了什么? 谢谢 ...

10 opengl es 2.0纹理加载

我正在制作一个OpenGL ES 2.0安卓旋转木马。 我有一个“for”函数,在每次迭代中都会调用“drawSquares”函数来绘制圆形中的正方形。 这是通过每次绘制新方块时更改modelMatrix来完成的。 (为了绘制正方形,我使用相同的顶点和片段着色器) 我需要在正方形上应 ...

暂无
暂无

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

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