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

标签 android opengl-es fragment-shader opengl-extensions

我正在使用 OpenGL ES 2.0 开发 Android 应用程序,我想使用 GL_EXT_shader_framebuffer_fetch扩展名

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

这是我的 fragment 着色器:

#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.

错误非常明显:不支持此扩展支持

我的技术规范:

  • 硬件:三星 Galaxy S4
  • Android 版本:5.0.1
  • Android API 级别:21
  • OpenGL 版本 (glGetString(GL_VERSION)):OpenGL ES 3.0 [email protected] AU@(CL@)

我有几个问题:

  • 我可以做些什么来在我的设备上安装此扩展程序吗?
  • 如果没有,我可以在模拟器上安装/使用它吗?
  • 这是软件问题还是真正的硬件问题?

最佳答案

Is there anything I can do to install this extension on my device?

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

If not, can I install it/use it on an emulator?

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

Is it a software matter or really a hardware problem?

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

关于android - 如何在 Android 上启用 OpenGL 扩展 GL_EXT_shader_framebuffer_fetch?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40912060/

相关文章:

android - Surfaceflinger 测试程序

android - 轻量级跨平台C GUI(OpenGL)

c++ - OpenGL 和 GLSL : Greyscale texture not showing

java - 从顶点着色器传递到片段着色器

opengl - 如何在片段着色器中进行自定义模板测试

java - Android SDK 管理器 Java "Loading Sources"OS X 上的异常

android - 在原始 Activity 中打开一个新 Activity 并完成原始 Activity

java - 在 Android 上的所有应用中添加 KeyListener 和 Draw To Screen

android - 我如何将 gldrawelements 用于许多正方形?

android - 在 opengl es 20 中将两个着色器属性合并到一个着色器中?