*nix Documentation Project
·  Home
 +   man pages
·  Linux HOWTOs
·  FreeBSD Tips
·  *niX Forums

  man pages->IRIX man pages -> OpenGL/glnormalpointer (3)              
Title
Content
Arch
Section
 

Contents


glNormalPointer(3G)	       OpenGL Reference		   glNormalPointer(3G)


NAME    [Toc]    [Back]

     glNormalPointer - define an array of normals

C SPECIFICATION    [Toc]    [Back]

     void glNormalPointer( GLenum type,
			   GLsizei stride,
			   const GLvoid	*pointer )

PARAMETERS    [Toc]    [Back]

     type     Specifies	the data type of each coordinate in the	array.
	      Symbolic constants GL_BYTE, GL_SHORT, GL_INT, GL_FLOAT, and
	      GL_DOUBLE	are accepted. The initial value	is GL_FLOAT.

     stride   Specifies	the byte offset	between	consecutive normals. If	stride
	      is 0- the	initial	value-the normals are understood to be tightly
	      packed in	the array.  The	initial	value is 0.

     pointer  Specifies	a pointer to the first coordinate of the first normal
	      in the array. The	initial	value is 0.

DESCRIPTION    [Toc]    [Back]

     glNormalPointer specifies the location and	data format of an array	of
     normals to	use when rendering.  type specifies the	data type of the
     normal coordinates	and stride gives the byte stride from one normal to
     the next, allowing	vertices and attributes	to be packed into a single
     array or stored in	separate arrays.  (Single-array	storage	may be more
     efficient on some implementations;	see glInterleavedArrays.)  When	a
     normal array is specified,	type, stride, and pointer are saved as
     client-side state.

     To	enable and disable the normal array, call glEnableClientState and
     glDisableClientState with the argument GL_NORMAL_ARRAY. If	enabled, the
     normal array is used when glDrawArrays, glDrawElements, or	glArrayElement
     is	called.

     Use glDrawArrays to construct a sequence of primitives (all of the	same
     type) from	prespecified vertex and	vertex attribute arrays.  Use
     glArrayElement to specify primitives by indexing vertices and vertex
     attributes	and glDrawElements to construct	a sequence of primitives by
     indexing vertices and vertex attributes.

NOTES    [Toc]    [Back]

     glNormalPointer is	available only if the GL version is 1.1	or greater.

     The normal	array is initially disabled and	isn't accessed when
     glArrayElement, glDrawElements, or	glDrawArrays is	called.

     Execution of glNormalPointer is not allowed between glBegin and the
     corresponding glEnd, but an error may or may not be generated. If an
     error is not generated, the operation is undefined.



									Page 1






glNormalPointer(3G)	       OpenGL Reference		   glNormalPointer(3G)



     glNormalPointer is	typically implemented on the client side.

     Since the normal array parameters are client-side state, they are not
     saved or restored by glPushAttrib and glPopAttrib.	 Use
     glPushClientAttrib	and glPopClientAttrib instead.

ERRORS    [Toc]    [Back]

     GL_INVALID_ENUM is	generated if type is not an accepted value.

     GL_INVALID_VALUE is generated if stride is	negative.

ASSOCIATED GETS    [Toc]    [Back]

     glIsEnabled with argument GL_NORMAL_ARRAY
     glGet with	argument GL_NORMAL_ARRAY_TYPE
     glGet with	argument GL_NORMAL_ARRAY_STRIDE
     glGetPointerv with	argument GL_NORMAL_ARRAY_POINTER


MACHINE	DEPENDENCIES
     On	RealityEngine, RealityEngine2, and VTX systems,	do not enable or
     disable GL_VERTEX_ARRAY, GL_VERTEX_ARRAY_EXT, GL_NORMAL_ARRAY,
     GL_NORMAL_ARRAY_EXT, GL_COLOR_ARRAY, GL_COLOR_ARRAY_EXT,
     GL_INDEX_ARRAY,GL_INDEX_ARRAY_EXT,	GL_TEXTURE_COORD_ARRAY,
     GL_TEXTURE_COORD_ARRAY_EXT, GL_EDGE_FLAG_ARRAY or GL_EDGE_FLAG_ARRAY_EXT
     between a call to glNewList and the corresponding call to glEndList.
     Instead, enable or	disable	before the call	to glNewList.

     On	InfiniteReality	systems	it is particularly important to	minimize the
     amount of data transferred	from the application to	the graphics pipe,
     since the host-to-pipe bandwidth limit can	cause a	performance
     bottleneck.  One way to reduce the	amount of data transferred per vertex
     is	to use properly-aligned	byte and short data types whenever possible.
     Accordingly, the EXT_vertex_array extension on InfiniteReality systems
     has been optimized	for vertex information packed into the following data
     structures.  (Note: v represents vertex coordinates, c represents color
     components, n represents normal coordinates, and t	represents texture
     coordinates.  Normals must	have unit length.)

	  struct {GLfloat v[3];}
	  struct {GLubyte c[4];	GLfloat	v[3];}
	  struct {GLshort n[3];	GLfloat	v[3];}
	  struct {GLubyte c[4];	GLshort	n[3]; GLfloat v[3];}
	  struct {GLshort t[2];	GLfloat	v[3];}
	  struct {GLshort t[2];	GLubyte	c[4]; GLfloat v[3];}
	  struct {GLshort t[2];	GLshort	n[3]; GLfloat v[3];}
	  struct {GLshort t[2];	GLubyte	c[4]; GLshort n[3]; GLfloat v[3];}
	  struct {GLfloat t[2];	GLfloat	v[3];}
	  struct {GLfloat t[2];	GLubyte	c[4]; GLfloat v[3];}
	  struct {GLfloat t[2];	GLshort	n[3]; GLfloat v[3];}
	  struct {GLfloat t[2];	GLubyte	c[4]; GLshort n[3]; GLfloat v[3];}

     Application-specific fields may be	added to these structures, provided



									Page 2






glNormalPointer(3G)	       OpenGL Reference		   glNormalPointer(3G)



     that all the fields described above retain	their relative order and word
     alignment.

     An	additional constraint applies when glTexGen is being used.  The
     implementation normally generates all four	texture	coordinates in
     parallel, and must	take special action to generate	just a subset of the
     four coordinates.	Therefore performance is best when none	of the texture
     coordinates are being generated, or when all of them are being generated.
     For example, when using 2D	texturing (generating s	and t coordinates) it
     will be faster to enable texture coordinate generation for	the r and q
     coordinates as well as s and t.  Choose a texture generation mode of
     GL_OBJECT_LINEAR and use the plane	equations (0,0,0,0) and	(0,0,0,1) for
     r and q, respectively.

     Using these structures on InfiniteReality systems can improve performance
     considerably, compared to structures in which all values are singleprecision
 floating	point.

SEE ALSO    [Toc]    [Back]

      
      
     glArrayElement, glColorPointer, glDrawArrays, glDrawElements,
     glEdgeFlagPointer,	glEnable, glGetPointerv, glIndexPointer,
     glInterleavedArrays, glPopClientAttrib, glPushClientAttrib,
     glTexCoordPointer,	glVertexPointer


									PPPPaaaaggggeeee 3333
[ Back ]
 Similar pages
Name OS Title
glnormalpointerext IRIX define a array of normals
glColorPointer Tru64 define an array of colors
glcolorpointerext IRIX define a array of colors
glcolorpointer IRIX define an array of colors
glvertexpointer IRIX define an array of vertex data
glindexpointerext IRIX define an array of color indexes
glvertexpointerext IRIX define an array of vertex data
glindexpointer IRIX define an array of color indexes
gltexcoordpointerext IRIX define an array of texture coordinates
gltexcoordpointer IRIX define an array of texture coordinates
Copyright © 2004-2005 DeniX Solutions SRL
newsletter delivery service