[GtkGLExt] API changes for the next major gtkglext release



Hi all

Braden has already written inviting opinions about font-related API
changes. There are a few more changes that need discussion.

The extensions wrappers API
===========================

Currently, gdklglext wraps around a lot of OpenGL, GLX and WGL
extension APIs.  This is the code you would find in <gdk/gdkglglext.h>
for example, if you have gtkglext's development package installed.

(a) These wrappers are poorly designed, being difficult to use and
waste space due to their verbosity.

(b) There are alternatives available under similar licenses such as
GLee and GLEW, which serve the same purpose.

(c) In an ideal world, GtkGLExt will someday be merged with GTK+.
Because of the extensions API bulk, it's very unlikely this will make
it into GTK+.

(d) This code's licensing is at best questionable. It used to be based
on headers released under a proprietary SGI license before, but now is
based on the Khronos licensed registry headers, which is similar to a
MIT license.  Though this can be compatible with gtkglext's LGPL
license for apps using this code, we cannot ship this wrapped code
under the LGPL license.

The options we have are:

i. Keep the extensions API as-is. (API compatible, questionable
licensing.)

ii. Rewrite the generated wrappers such that they are lightweight,
comparable to GLee and GLEW.  (API breaks, questionable licensing.)

iii. Rewrite the generated wrappers and split the generated wrappers
into a separate library. The base library is lightweight and simply
provides functions to use OpenGL with GTK+. (API breaks, base library
is cleanly licensed, extensions wrapper library has questionable
licensing.)

iv. Simply drop the extension wrappers, expecting users to switch to
GLee/GLEW.  (API breaks, the library becomes lightweight and cleanly
licensed.) With this option, the library also drops its bulk and
becomes more appealing to be merged into GTK+.


Ref-counted destroy vs. explicit destroy functions
==================================================

There are explicit destroy functions for some GObjects. We need to
look at these and fold them into the dispose/finalize methods.

		Mukund


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