SFML community forums

Help => Graphics => Topic started by: BlueCobold on October 10, 2016, 10:28:18 am

Title: [Android] called unimplemented OpenGL ES API - GLEXT_glBlendEquation
Post by: BlueCobold on October 10, 2016, 10:28:18 am
When setting a specific blendmode to render a sprite, I'm getting the following log-output on Android:

10-10 10:24:50.364: E/libEGL(18856): called unimplemented OpenGL ES API
target.draw(sprite, sf::BlendMode(sf::BlendMode::One, sf::BlendMode::OneMinusSrcAlpha));
When drawing it without a specific blend-mode, all is fine.

I can trace it down to this line in RenderTarget.cpp:
glCheck(GLEXT_glBlendEquation(equationToGlConstant(mode.colorEquation)));

Latest SFML master git version. Android 4.3 Samsung Galaxy S3.
Title: Re: [Android] called unimplemented OpenGL ES API - GLEXT_glBlendEquation
Post by: Mario on October 11, 2016, 12:54:06 pm
Sounds like a driver problem not exposing that extension - not sure that can be reproduced on other devices.

You'd had to step through yourself, if possible, trying to pin down the combination of "cans and can'ts".
Title: Re: [Android] called unimplemented OpenGL ES API - GLEXT_glBlendEquation
Post by: BlueCobold on October 11, 2016, 02:20:15 pm
Well, I now know this method isn't implemented, but since this is deeply inside the SFML core, I can only decide to either not render using any custom blendmode or keep getting the log spammed with errors.
For now I made a custom patch to disable this on Android, but I'd prefer a generic solution on SFML's side by checking the extension string (GL_ARB_imaging) to exist. However, the GL ES implementation of SFML doesn't do any dynamic extension checking at all and I don't know why this is the case - it simply imports everything and pretends the functions to always be fully implemented.