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.