GuiTeK
GuiTeK

Reputation: 1731

How to enable OpenGL extension GL_EXT_shader_framebuffer_fetch on Android?

I'm developing an Android app with OpenGL ES 2.0 and I'd like to use the GL_EXT_shader_framebuffer_fetch extension.

From what I understand, I need to enable it first with the #extension directive at the top of my fragment shader, and then I can use the built-in variable gl_LastFragData.

So here is my fragment shader:

#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;
}

However, when I compile the shader, I get the following compilation error:

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.

The error is pretty explicit: this extension is not supported.

My technical specs:

I have a few questions:

Upvotes: 3

Views: 4100

Answers (1)

solidpixel
solidpixel

Reputation: 12109

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

No; either the GPU and driver support it, or they don't.

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

If the emulator supports the extension, then yes you can use it ...

Is it a software matter or really a hardware problem?

Could be either a limitation in the underlying hardware, or a limitation in the driver. From an app developer point of view the two are indivisible, so it's sort of irrelevant which is the limitation really ...

Upvotes: 3

Related Questions