[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

Re: gl debugging help requested



Tom "spot" Callaway wrote:
On Fri, 2007-06-29 at 10:14 +0200, Hans de Goede wrote:

I've seen many glGenTextures crashes in games I've packaged, esp. on 64 bit. Usually the problem is that glGenTextures gets called before a glContext has been created. All proprietary GL implementations are fine with this, but Mesa will crash, esp on 64 bit (but I've seen this on 32 bit too).

Let me know if you need more help.

The code in question looks like this:

      unsigned char* data = read_png_file (m_file_name);

      GLuint texture_id;
      glGenTextures (1, &texture_id);
      glBindTexture (GL_TEXTURE_2D, texture_id);
      set_gl_parameters (data, smooth, mip_map, texture_wrap);
      m_texture_name = texture_id;
      delete [] data;
      ms_image_cache [m_file_name] =
        Cached_Image (m_texture_name, m_width_pixels, m_height_pixels);

All of the reference code I could find on google seemed to be similar,
declare the GLuint variable, then initialize it with glGenTextures.

Is there something obviously wrong here?


Not obviously no, let me try to rephrase my earlier hint.

No (none whatsover) libGL functions (including glGenTextures) may be called before an OpenGL context has been created, iow before a window suitable for openGL rendering has been created. So if this apps tries to loads the textures above before creating its window, then that will crash with Mesa.

The trick is to look at the sequence in which window creation (for example SDL
_setVideoMode() with OPENGL flag, and the glGenTextures get called. 99% of all crashes which in the BT point to glGenTextures() are because of glGenTextures getting called before the window + openGL context is created.

I hope that helps, if not please repost the URL to the srpm and I'll take a look as time permits.

Regards,

Hans


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]