gleTextureMode man page on IRIX

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



gleTextureMode(3GLE)	       GLE	     gleTextureMode(3GLE)

NAME
       gleTextureMode  -  set  the  type of GLE automatic texture
       coordinate generation.

SYNTAX
       void gleTextureMode (int mode);

ARGUMENTS
       mode	 bitwise OR of GLE texture mode flags

DESCRIPTION
       In addition to the default glTexGen modes  that	are  sup
       plied  by OpenGL, the tubing library also contains some of
       its own automatic texture coordinate generation	routines.
       In  addition,  user-defined  texture coord generation rou
       tines 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 tex
	      ture

	      If using the routine below, then disable glTexgGen

       gleTextureMode can be used to set the  type  of	automatic
       texture	coordinate  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 coordi
	      nate generation is disabled.

       The way in which the automatic texture coordinate  genera
       tion  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 tex
	      ture "u" coordinate, and	the  accumulated  segment
	      length as the "v" coordinate.

       GLE_TEXTURE_VERTEX_CYL
	      Uses  u = phi/(2*pi) = arctan (vy/vx)/(2*pi) as the
	      texture "u" coordinate, and the accumulated segment

GLE			       3.6				1

gleTextureMode(3GLE)	       GLE	     gleTextureMode(3GLE)

	      length  as  the "v" coordinate.  In the above equa
	      tion, "vx" and "vy" stand for the vertex'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" coordinate.  In the above equa
	      tion, "nx" and "ny" stand for the normal'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  texture "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  texture "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  coordi
	      nates.  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	 understand 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

GLE			       3.6				2

gleTextureMode(3GLE)	       GLE	     gleTextureMode(3GLE)

       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 segment number, and the segment length,
       the texture  coordinates	 can  be  adjusted.  Knowing  the
       length allows the length to be accumulated, so that a tex
       ture is applied lengthwise along the extrusion. It is this
       accumulated  length  that is used in the FLAT and CYL map
       ping 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 corresponds 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 advan
	      tage! 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

GLE			       3.6				3

gleTextureMode(3GLE)	       GLE	     gleTextureMode(3GLE)

	      the  vertex  x's and y's, thus changing the texture
	      coordinates.

       o      The contour "up" vector will NOT influence the tex
	      ture coordinates.

       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 undesired way, try using the "MODEL"  version
	      of the texture generation flag.

       o      Typically,  you will NOT want to use the "SPH" ver
	      sions of the texture generation engine  unless  you
	      really,  really have an extrusion for which spheri
	      cal  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@fc.net)

GLE			       3.6				4

[top]

List of man pages available for IRIX

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