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

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

Contents


glNormalPointerEXT(3G)	       OpenGL Reference		glNormalPointerEXT(3G)


NAME    [Toc]    [Back]

     glNormalPointerEXT	- define a array of normals

C SPECIFICATION    [Toc]    [Back]

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

PARAMETERS    [Toc]    [Back]

     type     Specifies	the the	data type of each coordinate in	the array.
	      Symbolic constants GL_BYTE, GL_SHORT, GL_INT, GL_FLOAT, or
	      GL_DOUBLE_EXT are	accepted.

     stride   Specifies	the byte offset	between	consecutive normals.

     count    Specifies	the number of normals, counting	from the first,	that
	      are static.

     pointer  Specifies	a pointer to the first coordinate of the first normal
	      in the array.

DESCRIPTION    [Toc]    [Back]

     glNormalPointerEXT	specifies the location and data	format of an array of
     normals to	use when rendering using the vertex array extension.  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.  (Singlearray
 storage may be more efficient on some implementations.)  count
     indicates the number of array elements (counting from the first) that are
     static. Static elements may be modified by	the application, but once they
     are modified, the application must	explicitly respecify the array before
     using it for any rendering. When a	normal array is	specified, type,
     stride, count and pointer are saved as client-side	state, and static
     array elements may	be cached by the implementation.

     The normal	array is enabled and disabled using glEnable and glDisable
     with the argument GL_NORMAL_ARRAY_EXT. If enabled,	the normal array is
     used when glDrawArraysEXT or glArrayElementEXT is called.

     Use glDrawArraysEXT to define a sequence of primitives (all of the	same
     type) from	pre-specified vertex and vertex	attribute arrays.  Use
     glArrayElementEXT to specify primitives by	indexing vertices and vertex
     attributes.

NOTES    [Toc]    [Back]

     Non-static	array elements are not accessed	until glArrayElementEXT	or
     glDrawArraysEXT is	executed.




									Page 1






glNormalPointerEXT(3G)	       OpenGL Reference		glNormalPointerEXT(3G)



     By	default	the normal array is disabled and it won't be accessed when
     glArrayElementEXT or glDrawArraysEXT is called.


     Although it is not	an error to call glNormalPointerEXT between the
     execution of glBegin and the corresponding	execution of glEnd, the
     results are undefined.


     glNormalPointerEXT	will typically be implemented on the client side with
     no	protocol.


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


     glNormalPointerEXT	commands are not entered into display lists.


     glNormalPointerEXT	is part	of the EXT_vertex_array	extension, not part of
     the core GL command set. If GL_EXT_vertex_array is	included in the	string
     returned by glGetString, when called with argument	GL_EXTENSIONS,
     extension EXT_vertex_array	is supported.

ERRORS    [Toc]    [Back]

     GL_INVALID_ENUM is	generated if type is not an accepted value.

     GL_INVALID_VALUE is generated if stride or	count is negative.

ASSOCIATED GETS    [Toc]    [Back]

     glIsEnabled with argument GL_NORMAL_ARRAY_EXT
     glGet with	argument GL_NORMAL_ARRAY_TYPE_EXT
     glGet with	argument GL_NORMAL_ARRAY_STRIDE_EXT
     glGet with	argument GL_NORMAL_ARRAY_COUNT_EXT
     glGetPointervEXT with argument GL_NORMAL_ARRAY_POINTER_EXT


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



									Page 2






glNormalPointerEXT(3G)	       OpenGL Reference		glNormalPointerEXT(3G)



     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
     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]

      
      
     glArrayElementEXT,	glColorPointerEXT, glDrawArraysEXT,
     glEdgeFlagPointerEXT, glEnable, glGetPointervEXT, glIndexPointerEXT,
     glTexCoordPointerEXT, glVertexPointerEXT


									PPPPaaaaggggeeee 3333
[ Back ]
 Similar pages
Name OS Title
glnormalpointer IRIX define an array of normals
glNormalPointer Tru64 define an 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
Copyright © 2004-2005 DeniX Solutions SRL
newsletter delivery service