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 )
vec4 Color = gl_LastFragColorARM;
Color = mix(Color, uBlend0, Color.w*uBlend0.w);
Color *= uBlend1;
vec4 Color = vec4(1,0,0,0) + 0.001*uBlend0*uBlend1;
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.
Hi zwcloud, The emulator is an API translator which turns OpenGL ES into host OpenGL API calls running on the host graphics driver and hardware. For shader extensions we are only able to expose functionality that the underlying graphics driver is able to support.Kind regards, Pete
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).
View all questions in Graphics and Gaming forum