Closed surban closed 1 year ago
Hi. Thanks for the report 👍 Yes certainly. It's failing at an error check after rendering here so if you could insert that error check context.error_check()
everywhere where relevant and pinpoint the exact OpenGL call that causes trouble, that would be most helpful 🙂
The problem is with TEXTURE_CUBE_MAP_SEAMLESS
. Seems that it is not supported by OpenGL ES.
Commenting out that line makes the error disappear.
Also I've found an easier method for debugging.
First I've switched from X11 to Wayland, which uses OpenGL ES for all rendering. This allows me to debug on my workstation without having to deal with Android.
Then I loaded the program in rust-gdb
and set a breakpoint on _mesa_error
. This function gets called immediately in case of an error. From there a backtrace directly shows the offending OpenGL call.
The problem is with
TEXTURE_CUBE_MAP_SEAMLESS
. Seems that it is not supported by OpenGL ES. Commenting out that line makes the error disappear.
Nice, that seems easy to fix. I tried to make a fix in #327, can you test it? I only tested on desktop and web, but it works on both.
Also I've found an easier method for debugging.
First I've switched from X11 to Wayland, which uses OpenGL ES for all rendering. This allows me to debug on my workstation without having to deal with Android.
Then I loaded the program in
rust-gdb
and set a breakpoint on_mesa_error
. This function gets called immediately in case of an error. From there a backtrace directly shows the offending OpenGL call.
Oh wow, that's some next level debugging 🧙
Hopefully fixed in version 0.14.1
and also on master.
Sorry, no time this week. I will verify next week.
No problem at all, take your time 👍 I was just 99% sure that it works, and if it doesn't, I'll just make a new release, it's no problem 🙂
Thanks. It's working now!
Hi.
I am using three-d 0.14 on an Android device with OpenGL ES 3.2. It is working fine mostly, but in some cases I am getting
ContextError("Invalid enum")
with the following stack trace:Could you provide some guidance on how to find the location where the invalid OpenGL enum is coming from?
It does not happen on desktop OpenGL, so I guess this must be some limitation of OpenGL ES.