如何在 Android 上启用 OpenGL 扩展 GL_EXT_shader_framebuffer_fetch?

2024-05-31

我正在使用 OpenGL ES 2.0 开发一个 Android 应用程序,我想使用GL_EXT_shader_framebuffer_fetch https://www.khronos.org/registry/gles/extensions/EXT/EXT_shader_framebuffer_fetch.txt扩大.

据我了解,我需要首先启用它#extension指令位于片段着色器的顶部,然后我可以使用内置变量gl_LastFragData.

这是我的片段着色器:

#extension GL_EXT_shader_framebuffer_fetch : require
// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ <- Enable the extension

varying highp vec2 textureCoords;
uniform sampler2D currentTexture;

void main()
{
    vec4 currentColor = texture2D(currentTexture, textureCoords);
    gl_FragColor = currentColor;
}

但是,当我编译着色器时,出现以下编译错误:

Couldn't compile shader: Fragment shader compilation failed.
ERROR: 0:1: '' :     GLSL error: extension 'GL_EXT_shader_framebuffer_fetch' is not supported
ERROR: 1 compilation errors. No code generated.

错误非常明显:这个扩展不是 支持的.

我的技术规格:

  • Hardware: 三星Galaxy S4
  • 安卓版本: 5.0.1
  • 安卓API级别: 21
  • OpenGL版本 (glGetString(GL_VERSION)):OpenGL ES 3.0[电子邮件受保护] /cdn-cgi/l/email-protectionAU@ (CL@)

我有几个问题:

  • 有什么我可以做的吗install我的设备上有这个扩展吗?
  • 如果没有,我可以安装它/在emulator?
  • Is it a software重要或确实hardware问题?

我可以做些什么来在我的设备上安装此扩展吗?

不; GPU 和驱动程序要么支持,要么不支持。

如果没有,我可以在模拟器上安装/使用它吗?

如果模拟器支持扩展,那么你可以使用它......

这是软件问题还是硬件问题?

可能是底层硬件的限制,也可能是驱动程序的限制。从应用程序开发人员的角度来看,两者是不可分割的,因此这实际上是不相关的限制......

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Android 上启用 OpenGL 扩展 GL_EXT_shader_framebuffer_fetch? 的相关文章

随机推荐