orange quad test working

This commit is contained in:
Josh Holtrop 2010-11-24 13:09:39 -05:00
parent b113b26ceb
commit 83ba6c75b4

62
dwss.c
View File

@ -39,6 +39,8 @@
#include <gtk/gtk.h> #include <gtk/gtk.h>
#include <gtk/gtkgl.h> #include <gtk/gtkgl.h>
#include <GL/gl.h>
#include "gs-theme-window.h" #include "gs-theme-window.h"
static gchar *geometry = NULL; static gchar *geometry = NULL;
@ -50,6 +52,61 @@ static GOptionEntry options[] = {
{NULL} {NULL}
}; };
static gboolean
expose (GtkWidget *da, GdkEventExpose *event, gpointer user_data)
{
GdkGLContext *glcontext = gtk_widget_get_gl_context(da);
GdkGLDrawable *gldrawable = gtk_widget_get_gl_drawable(da);
if (!gdk_gl_drawable_gl_begin(gldrawable, glcontext))
{
g_assert_not_reached();
}
glBegin(GL_QUADS);
glColor3f(1, 0.6, 0);
glNormal3f(0, 0, 1);
glVertex2f(1, 1);
glVertex2f(-1, 1);
glVertex2f(-1, -1);
glVertex2f(1, 0);
glEnd();
if (gdk_gl_drawable_is_double_buffered(gldrawable))
gdk_gl_drawable_swap_buffers(gldrawable);
else
glFlush();
gdk_gl_drawable_gl_end(gldrawable);
return TRUE;
}
static gboolean
configure (GtkWidget *da, GdkEventConfigure *event, gpointer user_data)
{
GdkGLContext *glcontext = gtk_widget_get_gl_context(da);
GdkGLDrawable *gldrawable = gtk_widget_get_gl_drawable(da);
if (!gdk_gl_drawable_gl_begin(gldrawable, glcontext))
{
g_assert_not_reached();
}
glViewport(0, 0, da->allocation.width, da->allocation.height);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glMatrixMode(GL_MODELVIEW);
glShadeModel(GL_SMOOTH);
gdk_gl_drawable_gl_end(gldrawable);
return TRUE;
}
int int
main (int argc, main (int argc,
char *argv[]) char *argv[])
@ -101,6 +158,11 @@ main (int argc,
g_assert_not_reached(); g_assert_not_reached();
} }
g_signal_connect(drawing_area, "configure-event",
G_CALLBACK(configure), NULL);
g_signal_connect(drawing_area, "expose-event",
G_CALLBACK(expose), NULL);
gtk_widget_show (drawing_area); gtk_widget_show (drawing_area);
gtk_container_add (GTK_CONTAINER (window), drawing_area); gtk_container_add (GTK_CONTAINER (window), drawing_area);