Example #1
0
void realizeOpenGL(struct OpenGL* ogl, long long gtkWindow_) {
	GtkWidget* window = GTK_WIDGET((void*) gtkWindow_);

	GdkGLConfig
			* config = gdk_gl_config_new_by_mode_for_screen(
					gdk_screen_get_default(), GDK_GL_MODE_RGB
							| GDK_GL_MODE_SINGLE/*| GDK_GL_MODE_DOUBLE*/);
	if (config == NULL)
		return;

	//printf("ogl=%p\n", ogl);
	ogl->config = config;

	gtk_widget_unrealize(window);
	if (!gtk_widget_set_gl_capability(window, ogl->config, NULL, FALSE,
			GDK_GL_RGBA_TYPE)) {
		fprintf(stderr, "Cannot enable GDKGL on window");
		return;
	}

	gtk_widget_realize(window);
	GdkGLDrawable* drawable = gtk_widget_get_gl_drawable(GTK_WIDGET(window));

	ogl->drawable = drawable;
	ogl->widget = GTK_WIDGET(window);
	ogl->context = gtk_widget_get_gl_context(ogl->widget);


	glEnableClientState(GL_VERTEX_ARRAY);
	glEnableClientState(GL_COLOR_ARRAY);
	glVertexPointer(2, GL_SHORT, 0, ogl->vertices);
	//gdk_gl_drawable_gl_begin(ogl->drawable, ogl->context);

}
Example #2
0
static int lglext_config_new_by_mode_for_screen(lua_State* L)
{
	luaL_checktype(L, 1, LUA_TUSERDATA);
	luaL_checktype(L, 2, LUA_TNUMBER);
	Object* obj = lua_touserdata(L, 1);

	GdkGLConfig* ptr = gdk_gl_config_new_by_mode_for_screen(
		GDK_SCREEN(obj->pointer), lua_tointeger(L, 2));
	object_new(L, ptr, TRUE);

	return 1;
}