flyx / OpenGLAda

Thick Ada binding for OpenGL and GLFW
flyx.github.io/OpenGLAda/
MIT License
95 stars 13 forks source link

Problem using Gl.Text.To_Texture #142

Open rogermc2 opened 4 years ago

rogermc2 commented 4 years ago

I have been trying to use Gl.Text.To_Texture but when I run my program the texture displays on the first iteration of the main loop only. I have been unable to figure out why this happens.

flyx commented 4 years ago

Can you provide a complete working example including the main loop so that I can build and execute it?

rogermc2 commented 4 years ago

I've just realized that the common that I used for the example (now deleted) is a local version that may have something to do with the problem, so you might want to delay any further investigation until I've checked against the current OpenGLAda-examples version which I will do tomorrow. Apologies for any inconvenience.

rogermc2 commented 4 years ago

Using the debugger on To_Texture, I get three error messages:

  1. fb = <error reading variable fb (No definition of "fb__XRP_gl__objects__framebuffer__XE" in current context.)>
  2. tx = <error reading variable tx (No definition of "tx__XRP_gl__objects__textures_XE" in current context.)>
  3. va = <error reading variable va (No definition of "va__XRP_gl__objects__vertex_arrays_XE" in current context.)>

This occurs on all iterations including the first. As these are renames, this seems to be a debugger bug?

Other than that, I can see no other problems given my limited debugging experience at this level.

rogermc2 commented 4 years ago

This latest version, with most unneccessary code removed and built in the OpenGLAda-examples environment, produces the same result. I have included a delay in the main loop to emphasise that text is only displayed on the first iteration of the loop.

text_render_test.zip

flyx commented 3 years ago

I did have a look at this when you first posted it but couldn't figure out what goes wrong. Today I tested this again with proper OpenGL 4.3 debugging (now available via GL.Debug) output enabled to see if anything is wrong on the OpenGL side. There isn't.

I tried to understand what the code does but ultimately I gave up. There is far too much going on with this common stuff it pulls in. As I see it, there are two possibilities:

The only thing I can say is that all OpenGL calls in both this test code and GL.Text are correct since OpenGL debugging does not return any error.