2

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

据我了解,我需要先使用#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.

错误非常明确: 支持此扩展。

我的技术规格:

  • 硬件:三星 Galaxy S4
  • 安卓版本:5.0.1
  • Android API 级别:21
  • OpenGL版本glGetString(GL_VERSION)):OpenGL ES 3.0 V@84.0 AU@(CL@)

我有几个问题:

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

1 回答 1

3

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

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

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

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

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

可能是底层硬件的限制,也可能是驱动程序的限制。从应用程序开发人员的角度来看,这两者是不可分割的,所以它有点无关紧要,这才是真正的限制......

于 2016-12-01T14:28:53.293 回答