gleTextureMode man page on SuSE

Man page or keyword search:  
man Server   14857 pages
apropos Keyword Search (all sections)
Output format
SuSE logo
[printable version]

gleTextureMode(3GLE)		      GLE		  gleTextureMode(3GLE)

NAME
       gleTextureMode  - set the type of GLE automatic texture coordinate gen‐
       eration.

SYNTAX
       void gleTextureMode (int mode);

ARGUMENTS
       mode	 bitwise OR of GLE texture mode flags

DESCRIPTION
       In addition to the default glTexGen modes that are supplied by  OpenGL,
       the  tubing  library  also  contains  some of its own automatic texture
       coordinate generation routines. In addition, user-defined texture coord
       generation routines can be supplied.

       To use texture mapping with the extrusion library, one must remember to
       "do the obvious":

	      Enable texture mapping through OpenGL

	      Define and load (glTexImage2D/glBindTexture) a texture

	      If using the routine below, then disable glTexgGen

       gleTextureMode can be used to set the type of automatic texture coordi‐
       nate  generation to be used. The argument should be a bitwise-OR of any
       of the following flags:

       GLE_TEXTURE_ENABLE
	      If this bit is set, then texturing is enabled. If	 this  bit  is
	      NOT  set,	 then  automatic texture coordinate generation is dis‐
	      abled.

       The way in which the automatic texture coordinate generation occurs  is
       determined  by  one  of	the following flags. One and only one of these
       should be selected at a time. These tokens  are	enumerants,  not  bit-
       flags.

       GLE_TEXTURE_VERTEX_FLAT
	      Uses  the vertexes "x" coordinate as the texture "u" coordinate,
	      and the accumulated segment length as the "v" coordinate.

       GLE_TEXTURE_NORMAL_FLAT
	      Uses the normal vector's "x" coordinate as the texture "u" coor‐
	      dinate,  and  the	 accumulated segment length as the "v" coordi‐
	      nate.

       GLE_TEXTURE_VERTEX_CYL
	      Uses u = phi/(2*pi) = arctan (vy/vx)/(2*pi) as the  texture  "u"
	      coordinate,  and the accumulated segment length as the "v" coor‐
	      dinate.  In the above equation, "vx" and "vy" stand for the ver‐
	      tex's x and y coordinates.

       GLE_TEXTURE_NORMAL_CYL
	      Uses  u  = phi/(2*pi) = arctan (ny/nx)/(2*pi) as the texture "u"
	      coordinate, and the accumulated segment length as the "v"	 coor‐
	      dinate.  In the above equation, "nx" and "ny" stand for the nor‐
	      mal's x and y coordinates.

       GLE_TEXTURE_VERTEX_SPH
	      Uses u = phi/(2*pi) = arctan (vy/vx)/(2*pi) as the  texture  "u"
	      coordinate, and v = theta/pi = (1.0 - arccos(vz))/pi as the tex‐
	      ture "v" coordinate. In the above equation, "vx","vy"  and  "vz"
	      stand for the vertex's x, y and z coordinates.

       GLE_TEXTURE_NORMAL_SPH
	      Uses  u  = phi/(2*pi) = arctan (ny/nx)/(2*pi) as the texture "u"
	      coordinate, and v = theta/pi = (1.0 - arccos(nz))/pi as the tex‐
	      ture  "v"	 coordinate. In the above equation, "nx","ny" and "nz"
	      stand for the normal's x, y and z coordinates.

       GLE_TEXTURE_VERTEX_MODEL_FLAT

       GLE_TEXTURE_NORMAL_MODEL_FLAT

       GLE_TEXTURE_VERTEX_MODEL_CYL

       GLE_TEXTURE_NORMAL_MODEL_CYL

       GLE_TEXTURE_VERTEX_MODEL_SPH

       GLE_TEXTURE_NORMAL_MODEL_SPH
	      These define texture mapping modes  that	are  very  similar  to
	      those  described	above,	except that the untransformed vertices
	      and/or normals are used. As a result, textures tends to stick to
	      the  extrusion according to the extrusions local surface coordi‐
	      nates rather than according to real-space coordinates. This will
	      in  general  provide  the	 correct style of texture mapping when
	      affine transforms are being applied to the  contour,  since  the
	      coordinates used are those prior to the affine transform.

OPERATION
       To best understand how to use the above functions, it is best to under‐
       stand how the tubing is actually drawn. Let us start by	defining  some
       terms.  The  tubing library "extrudes" a "contour" along a "path".  The
       contour is a 2D polyline. The path is a 3D polyline. We	use  the  word
       "segment"  to refer to a straight-line segment of the path polyline. We
       also interchangeably use the word "segment" to stand for the section of
       the extrusion that lies along a path segment.

       The tubing library draws segments one at a time. It uses glPushmatrix()
       and glPopmatrix() to orient each segment along the negative z-axis. The
       segment	starts	at z=0 and ends at some negative z-value (equal to the
       length of the segment). The segment is then  drawn  by  calling	glVer‐
       tex3f()	(and  glNormal3F()) by drawing the 2D contour at z=0 and again
       at z=-len. (Of course, if the join style is one of the fancy ones, then
       the  end-points	are  trimmed  in  a  variety  of ways, and do not land
       exactly on z=0, or z=-len, but they do come close). Note that glBegin()
       and  glEnd() are called around each segment. (Note also that additional
       glBegins/Ends may be called to draw end-caps or filleting triangles for
       the more complex join styles.)

       The  obvious  way  to  automatically  generate  textures is to warp the
       glVertex() and glNormal() functions, and	 compute  texture  coordinates
       based on the 3-space vertex and normal coordinates. This is essentially
       what the tubing code does, except that it passes some extra parameters.
       The  glBegin  calls are wrapped, and the integer segment number and the
       floating-point length of the segment are passed in. By knowing the seg‐
       ment  number,  and  the	segment length, the texture coordinates can be
       adjusted. Knowing the length allows the length to  be  accumulated,  so
       that  a	texture	 is applied lengthwise along the extrusion. It is this
       accumulated length that is used in the FLAT and CYL mapping modes.

       For each vertex, not only are the vertex x,y,z  coordinates  available,
       but so is a contour vertex counter indicating which contour vertex this
       corresponds to. There is also a flag indicating whether the vertex cor‐
       responds	 to  a	front  or  back	 vertex (i.e. a z=0 or z=-len vertex).
       Again, this info can be used to avoid confusion when drawing  the  more
       complex join styles.

HINTS
       Here are a few hints, tips, and techniques:

       o      Hint:  Confused?	RUN THE DEMOS! The best way to understand what
	      all the different texture modes are doing	 is  to	 see  them  in
	      action.

       o      Hint: The texture matrix can be used to your advantage! That is,
	      you can use glMatrixMode(GL_TEXTURE) to control how textures are
	      mapped  to  the surface. In particular, you may/will want to use
	      it to to rescale the V coordinate.

       o      The origin of the contour will in general change the vertex  x's
	      and y's, thus changing the texture coordinates.

       o      The  contour  "up" vector will NOT influence the texture coordi‐
	      nates.

       o      For the FLAT and CYL modes, the accumulated length really is the
	      accumulated  length  of  the  segments  in modeling coordinates.
	      Unless the extrusion is very small, this length will probably be
	      much  larger  than  1.0, and so the resulting texture coordinate
	      will wrap. You will generally want to rescale the "V" coordinate
	      to make the texture map fit.

       o      If  the  texture is "swimming" around on the surface in an unde‐
	      sired way, try using the "MODEL" version of the texture  genera‐
	      tion flag.

       o      Typically,  you  will  NOT want to use the "SPH" versions of the
	      texture generation engine unless	you  really,  really  have  an
	      extrusion	 for which spherical coordinates are appropriate. Most
	      uses of extrusions are best handled with the  "FLAT"  and	 "CYL"
	      generation methods.

       o      User-defined  texture  generation	 callbacks  are	 not currently
	      implemented, but these should be very, very easy to hack	in  as
	      desired.	 It should be easy to let your imagination run wild in
	      here. Look at texgen.c -- what needs to be done should be	 obvi‐
	      ous, I hope.  When in doubt, experiment.

BUGS
       Multiple threads using GLE share a single texture mode.

SEE ALSO
       gleExtrusion, gleSetJoinStyle

AUTHOR
       Linas Vepstas (linas@linas.org)

GLE				      3.0		  gleTextureMode(3GLE)
[top]

List of man pages available for SuSE

Copyright (c) for man pages and the logo by the respective OS vendor.

For those who want to learn more, the polarhome community provides shell access and support.

[legal] [privacy] [GNU] [policy] [cookies] [netiquette] [sponsors] [FAQ]
Tweet
Polarhome, production since 1999.
Member of Polarhome portal.
Based on Fawad Halim's script.
....................................................................
Vote for polarhome
Free Shell Accounts :: the biggest list on the net