OpenGL ES Emulator Version 3.0.4 Windows 64-bit Windows 64-bitReleased: November 29, 2019
downloaded from here:
A demo that can reproduce that issue:https://github.com/zwcloud/OpenGLES-FrameBufferFetch
Just open DeferredShading/DeferredShading.sln in VS2019, build and run it. A red vec4(1,0,0,0) triangle will show up: it means that GL_ARM_shader_framebuffer_fetch are not defined.
See the fragment shader here:https://github.com/zwcloud/OpenGLES-FrameBufferFetch/blob/f117b8e412db909774fea7951a45e809112b62b0/DeferredShading/DeferredShading.cpp#L24
#version 310 es #extension GL_ARM_shader_framebuffer_fetch : enable precision mediump float; layout(location = 0) uniform vec4 uBlend0; layout(location = 1) uniform vec4 uBlend1; layout(location = 0) out vec4 fragColor; void main ( void ) { #ifdef GL_ARM_shader_framebuffer_fetch vec4 Color = gl_LastFragColorARM; Color = mix(Color, uBlend0, Color.w*uBlend0.w); Color *= uBlend1; #else vec4 Color = vec4(1,0,0,0) + 0.001*uBlend0*uBlend1; #endif fragColor = Color; }
You can also remove #if GL_ARM_shader_framebuffer_fetch to be convinced:
> error C1503: undefined variable "gl_LastFragColorARM"
I cannot understand why an ARM OpenGLES emulator doesn't support its own extension GL_ARM_shader_framebuffer_fetch, that's ridiculous.
OK. Then such limitation should be clearly pointed out in the docs of the emulator.
The full list of supported extensions for different context versions is listed in the "OpenGL ES Extensions" table on page 18/19
OK. Hope our conversation will help other users run into the same issue (feature).