当前位置: 首页 > 知识库问答 >
问题:

Android:使用OpenGL对SurfaceTexture进行双通道渲染

松锐藻
2023-03-14

为了在表面贴图上执行高斯模糊,我正在执行双通道渲染,意思是我通过一个着色器(水平模糊),然后通过另一个着色器(垂直模糊)的纹理。

有一些这样的例子,但似乎都不适用,因为SurfaceTexture在glBindTexture中使用GL_TEXTURE_EXTERNAL_OES作为目标,而不是GL_Texture_2D。因此,在对glFramebufferTexture2D的调用中,GL_TEXTURE_2D不能用作textarget,而且我认为GL_TEXTURE_EXTERNAL_OES也不能用于此调用。

谁能给出一个方法来渲染一个纹理两次,最后渲染到一个表面贴图?

重要更新:我正在使用一个SurfaceTexture,因为这是一个视频的动态模糊播放到一个表面。

编辑:这个问题被我问得有些误解。SurfaceTexture不是显示元素。它从表面接收数据,并连接到GL_TEXTURE_EXTERNAL_OES。

谢谢你。

共有1个答案

米迪
2023-03-14

在这里,渲染到一个表面像是一件奇怪的事情。SurfaceTexture的要点是将发送到表面的任何东西转换成GLES的“外部”纹理。由于您正在使用GLES进行呈现,因此您可以只使用FBO将其呈现为gl_texture_2d进行第二次传递。

SurfaceTexture用于从摄像机或视频解码器接收帧,因为源通常是YUV。“外部”纹理格式允许更广泛的像素格式,但限制了纹理的使用。如果你的目标是创建一个GLES纹理,那么用GLES渲染一个SurfaceTexture是没有价值的。

 类似资料:
  • 本文档介绍了在 After Effects 中使用 OpenGL 和 GPU 的硬件和软件注意事项。 使用哪款 GPU 才能获得最佳性能? 市面上不断推出各种新的 GPU 芯片组,After Effects 无法一一对其进行验证,也无法判断哪个 GPU 芯片组最适用,然而,您可遵循以下指导原则,找出最适合自己工作流程的 GPU。 个别 GPU 技术的重要程度,低于整体 GPU 性能。After E

  • 本文档介绍了在 After Effects 中使用 OpenGL 和 GPU 的硬件和软件注意事项。 使用哪款 GPU 才能获得最佳性能? 市面上不断推出各种新的 GPU 芯片组,After Effects 无法一一对其进行验证,也无法判断哪个 GPU 芯片组最适用,然而,您可遵循以下指导原则,找出最适合自己工作流程的 GPU。 个别 GPU 技术的重要程度,低于整体 GPU 性能。After E

  • 问题内容: 我知道如何在AngularJS中创建 视图 条件,该条件将根据条件显示或隐藏dom元素: 但是如何创建确定是否渲染div 的 渲染 条件? 问题答案: 针对angularjs 1.1.5及更高版本用户的更新(在1.0.7中不受支持): 相关提交:https : //github.com/angular/angular.js/commit/2f96fbd17577685bc013a4f7

  • 14.2.1 概念 在第一个例子中,协程是独立执行的,他们之间没有通信。他们必须通信才会变得更有用:彼此之间发送和接收信息并且协调/同步他们的工作。协程可以使用共享变量来通信,但是很不提倡这样做,因为这种方式给所有的共享内存的多线程都带来了困难。 而 Go 有一种特殊的类型,通道(channel),就像一个可以用于发送类型化数据的管道,由其负责协程之间的通信,从而避开所有由共享内存导致的陷阱;这种

  • 所以我有一个非常简单的glsl着色器,可以用纹理和平行光渲染对象。 现在我有一个非常艰难的时间试图得到的纹理显示,其他一切工作,除此之外。 当我禁用着色器(glUseProgram(0))时,纹理以黑色和白色渲染,但当我启用它时,整个网格是单一颜色,没有纹理,当我尝试不同的纹理时,它会改变颜色。 这就是我加载纹理的方式 这就是我如何绑定我的纹理 这是我的顶点着色器 这是我的碎片着色器 最后但并非最

  • 当我在Android Studio中使用模拟器运行一个项目时,我在调试窗口中得到以下错误: /home/me/android/sdk/tools/emulator-netdelay none-netspeed full-AVD Nexus_6P_API_24 警告:不推荐使用Mesa软件渲染器。使用Swiftshader(-GPU Swiftshader)进行软件渲染。 据我所知,这个模拟器工作得