Use glTexSubImage to update the pixels.
authorChia-I Wu <olvaffe@gmail.com>
Fri, 29 Oct 2010 07:20:16 +0000 (15:20 +0800)
committerKristian Høgsberg <krh@bitplanet.net>
Fri, 29 Oct 2010 16:34:47 +0000 (12:34 -0400)
glTexImage causes respecification.  The DRM buffer a client renders to
will be different from that used to create the wl_buffer.

clients/window.c
compositor/compositor.c

index 24ec5b0..2dd7135 100644 (file)
@@ -275,9 +275,8 @@ display_create_drm_surface_from_file(struct display *display,
        }
 
        surface = display_create_drm_surface(display, rect);
-       glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA,
-                    rect->width, rect->height,
-                    0, GL_RGBA, GL_UNSIGNED_BYTE, pixels);
+       glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, rect->width, rect->height,
+                       GL_RGBA, GL_UNSIGNED_BYTE, pixels);
 
        gdk_pixbuf_unref(pixbuf);
 
index 7daacea..94e70a5 100644 (file)
@@ -192,8 +192,8 @@ texture_from_png(const char *filename, int width, int height)
        else
                format = GL_RGB;
 
-       glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA,
-                    width, height, 0, format, GL_UNSIGNED_BYTE, data);
+       glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, width, height,
+                       format, GL_UNSIGNED_BYTE, data);
 
        gdk_pixbuf_unref(pixbuf);