Welcome, Guest. Please login or register. Did you miss your activation email?

Author Topic: [Android] called unimplemented OpenGL ES API - GLEXT_glBlendEquation  (Read 3799 times)

0 Members and 1 Guest are viewing this topic.

BlueCobold

  • Full Member
  • ***
  • Posts: 105
    • View Profile
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.
« Last Edit: October 10, 2016, 10:56:36 am by BlueCobold »

Mario

  • SFML Team
  • Hero Member
  • *****
  • Posts: 879
    • View Profile
Re: [Android] called unimplemented OpenGL ES API - GLEXT_glBlendEquation
« Reply #1 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".

BlueCobold

  • Full Member
  • ***
  • Posts: 105
    • View Profile
Re: [Android] called unimplemented OpenGL ES API - GLEXT_glBlendEquation
« Reply #2 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.
« Last Edit: October 11, 2016, 05:16:39 pm by BlueCobold »