types

types — All types used in libg3d

Synopsis




#define     G3D_FLAG_IMG_GREYSCALE
            G3DImage;
#define     G3D_FLAG_MAT_TWOSIDE
            G3DMaterial;
#define     G3D_FLAG_FAC_NORMALS
#define     G3D_FLAG_FAC_TEXMAP
            G3DFace;
            G3DObject;
gboolean    (*G3DSetBgColorFunc)            (gfloat r,
                                             gfloat g,
                                             gfloat b,
                                             gfloat a,
                                             gpointer user_data);
gboolean    (*G3DUpdateInterfaceFunc)       (gpointer user_data);
gboolean    (*G3DUpdateProgressBarFunc)     (gfloat percentage,
                                             gboolean show,
                                             gpointer user_data);
            G3DContext;
            G3DModel;

Description

Details

G3D_FLAG_IMG_GREYSCALE

#define G3D_FLAG_IMG_GREYSCALE       (1L << 1)


G3DImage

typedef struct {
	gchar *name;
	guint32 width;
	guint32 height;
	guint8 depth;
	guint32 flags;
	guint8 *pixeldata;

	guint32 tex_id;
	G3DTexEnv tex_env;
	gfloat tex_scale_u;
	gfloat tex_scale_v;
} G3DImage;

Object containing a two-dimensional pixel image.

gchar *name; name of image
guint32 width; width of image in pixels
guint32 height; height of image in pixels
guint8 depth; depth of image in bits
guint32 flags; flags
guint8 *pixeldata; the binary image data
guint32 tex_id; the OpenGL texture id, should be unique model-wide
G3DTexEnv tex_env; texture environment flags
gfloat tex_scale_u; factor scaling texture width, should be 1.0 for most cases
gfloat tex_scale_v; factor scaling texture height, should be 1.0 for most cases

G3D_FLAG_MAT_TWOSIDE

#define G3D_FLAG_MAT_TWOSIDE    (1L << 0)


G3DMaterial

typedef struct {
	gchar *name;
	gfloat r, g, b, a;
	gfloat shininess;
	gfloat specular[4];
	guint32 flags;

	G3DImage *tex_image;
} G3DMaterial;

A material object.

gchar *name; name of material
gfloat r; red component of color
gfloat g; green component of color
gfloat b; blue component of color
gfloat a; alpha component of color
gfloat shininess; shiny color
gfloat specular[4]; specular color
guint32 flags; flags
G3DImage *tex_image; texture image (optional, may be NULL)

G3D_FLAG_FAC_NORMALS

#define G3D_FLAG_FAC_NORMALS    (1L << 0)


G3D_FLAG_FAC_TEXMAP

#define G3D_FLAG_FAC_TEXMAP     (1L << 1)


G3DFace

typedef struct {
	guint32 vertex_count;
	guint32 *vertex_indices;

	G3DMaterial *material;

	guint32 flags;

	gfloat *normals;

	G3DImage *tex_image;
	guint32 tex_vertex_count;
	gfloat *tex_vertex_data;
} G3DFace;

An object representing a surface.

guint32 vertex_count; number of vertices
guint32 *vertex_indices; indices of vertices in G3DObject
G3DMaterial *material; material to use for surface
guint32 flags; flags
gfloat *normals; optional normal array (one vector - 3 gfloat values - for each vertex)
G3DImage *tex_image; optional texture image
guint32 tex_vertex_count; number of texture vertices, should be 0 or match vertex_count
gfloat *tex_vertex_data; array of texture vertices

G3DObject

typedef struct {
	gchar *name;

	GSList *materials;
	GSList *faces;
	GSList *objects;

	/* transformation, may be NULL */
	G3DTransformation *transformation;

	/* don't render this object */
	gboolean hide;

	/* vertices */
	guint32 vertex_count;
	gfloat *vertex_data;

	/* texture stuff: temporary storage, should be in G3DFace items */
	guint32 tex_vertex_count;
	gfloat *tex_vertex_data;
	G3DImage *tex_image;

	/* some fields to speed up rendering, should not be used by plugins */
	/* FIXME: remove from API (replace with user_data pointer?) */
	gfloat *_normals;
	G3DMaterial **_materials;
	guint32  _num_faces;
	guint32 *_indices;
	guint32 *_flags;
	guint32 *_tex_images;
	gfloat *_tex_coords;
} G3DObject;

A three-dimensional object.

gchar *name; name of object
GSList *materials; list of materials
GSList *faces; list of faces
GSList *objects; list of sub-objects
G3DTransformation *transformation; optional transformation
gboolean hide; flag to disable object rendering
guint32 vertex_count; number of vertices
gfloat *vertex_data; vertex vector data
guint32 tex_vertex_count;
gfloat *tex_vertex_data;
G3DImage *tex_image;
gfloat *_normals;
G3DMaterial **_materials;
guint32 _num_faces;
guint32 *_indices;
guint32 *_flags;
guint32 *_tex_images;
gfloat *_tex_coords;

G3DSetBgColorFunc ()

gboolean    (*G3DSetBgColorFunc)            (gfloat r,
                                             gfloat g,
                                             gfloat b,
                                             gfloat a,
                                             gpointer user_data);

r :
g :
b :
a :
user_data :
Returns :

G3DUpdateInterfaceFunc ()

gboolean    (*G3DUpdateInterfaceFunc)       (gpointer user_data);

user_data :
Returns :

G3DUpdateProgressBarFunc ()

gboolean    (*G3DUpdateProgressBarFunc)     (gfloat percentage,
                                             gboolean show,
                                             gpointer user_data);

percentage :
show :
user_data :
Returns :

G3DContext

typedef struct {
	GSList *plugins;
#ifdef USE_LIBMAGIC
	magic_t magic_cookie;
#endif

	GHashTable *exts_import;
	GHashTable *exts_image;

	G3DSetBgColorFunc set_bgcolor_func;
	gpointer set_bgcolor_data;
	G3DUpdateInterfaceFunc update_interface_func;
	gpointer update_interface_data;
	G3DUpdateProgressBarFunc update_progress_bar_func;
	gpointer update_progress_bar_data;
} G3DContext;

Internal stuff for libg3d.


G3DModel

typedef struct {
	gchar *filename;
	G3DContext *context;

	GSList *materials;
	GSList *objects;

	GHashTable *tex_images;
} G3DModel;