home *** CD-ROM | disk | FTP | other *** search
/ IRIX Base Documentation 2001 May / SGI IRIX Base Documentation 2001 May.iso / usr / share / catman / g_man / cat3 / OpenGL / glvertexpointer.z / glvertexpointer
Encoding:
Text File  |  2001-04-17  |  15.4 KB  |  199 lines

  1.  
  2.  
  3.  
  4. ggggllllVVVVeeeerrrrtttteeeexxxxPPPPooooiiiinnnntttteeeerrrr((((3333GGGG))))            OOOOppppeeeennnnGGGGLLLL RRRReeeeffffeeeerrrreeeennnncccceeee            ggggllllVVVVeeeerrrrtttteeeexxxxPPPPooooiiiinnnntttteeeerrrr((((3333GGGG))))
  5.  
  6.  
  7.  
  8. NNNNAAAAMMMMEEEE
  9.      ggggllllVVVVeeeerrrrtttteeeexxxxPPPPooooiiiinnnntttteeeerrrr - define an array of vertex data
  10.  
  11.  
  12. CCCC SSSSPPPPEEEECCCCIIIIFFFFIIIICCCCAAAATTTTIIIIOOOONNNN
  13.      void ggggllllVVVVeeeerrrrtttteeeexxxxPPPPooooiiiinnnntttteeeerrrr( GLint _s_i_z_e,
  14.                            GLenum _t_y_p_e,
  15.                            GLsizei _s_t_r_i_d_e,
  16.                            const GLvoid *_p_o_i_n_t_e_r )
  17.  
  18.  
  19. PPPPAAAARRRRAAAAMMMMEEEETTTTEEEERRRRSSSS
  20.      _s_i_z_e     Specifies the number of coordinates per vertex; must be 2, 3, or
  21.               4. The initial value is 4.
  22.  
  23.      _t_y_p_e     Specifies the data type of each coordinate in the array.
  24.               Symbolic constants GGGGLLLL____SSSSHHHHOOOORRRRTTTT, GGGGLLLL____IIIINNNNTTTT, GGGGLLLL____FFFFLLLLOOOOAAAATTTT, and GGGGLLLL____DDDDOOOOUUUUBBBBLLLLEEEE are
  25.               accepted. The initial value is GGGGLLLL____FFFFLLLLOOOOAAAATTTT.
  26.  
  27.      _s_t_r_i_d_e   Specifies the byte offset between consecutive vertexes. If
  28.               _s_t_r_i_d_e is 0, the vertexes are understood to be tightly packed in
  29.               the array. The initial value is 0.
  30.  
  31.      _p_o_i_n_t_e_r  Specifies a pointer to the first coordinate of the first vertex
  32.               in the array. The initial value is 0.
  33.  
  34. DDDDEEEESSSSCCCCRRRRIIIIPPPPTTTTIIIIOOOONNNN
  35.      ggggllllVVVVeeeerrrrtttteeeexxxxPPPPooooiiiinnnntttteeeerrrr specifies the location and data format of an array of
  36.      vertex coordinates to use when rendering.  _s_i_z_e specifies the number of
  37.      coordinates per vertex and _t_y_p_e the data type of the coordinates. _s_t_r_i_d_e
  38.      specifies the byte stride from one vertex to the next allowing vertexes
  39.      and attributes to be packed into a single array or stored in separate
  40.      arrays.  (Single-array storage may be more efficient on some
  41.      implementations; see ggggllllIIIInnnntttteeeerrrrlllleeeeaaaavvvveeeeddddAAAArrrrrrrraaaayyyyssss.)  When a vertex array is
  42.      specified, _s_i_z_e, _t_y_p_e, _s_t_r_i_d_e, and _p_o_i_n_t_e_r are saved as client-side
  43.      state.
  44.  
  45.      To enable and disable the vertex array, call ggggllllEEEEnnnnaaaabbbblllleeeeCCCClllliiiieeeennnnttttSSSSttttaaaatttteeee and
  46.      ggggllllDDDDiiiissssaaaabbbblllleeeeCCCClllliiiieeeennnnttttSSSSttttaaaatttteeee with the argument GGGGLLLL____VVVVEEEERRRRTTTTEEEEXXXX____AAAARRRRRRRRAAAAYYYY. If enabled, the
  47.      vertex array is used when ggggllllDDDDrrrraaaawwwwAAAArrrrrrrraaaayyyyssss, ggggllllDDDDrrrraaaawwwwEEEElllleeeemmmmeeeennnnttttssss, or ggggllllAAAArrrrrrrraaaayyyyEEEElllleeeemmmmeeeennnntttt
  48.      is called.
  49.  
  50.      Use ggggllllDDDDrrrraaaawwwwAAAArrrrrrrraaaayyyyssss to construct a sequence of primitives (all of the same
  51.      type) from prespecified vertex and vertex attribute arrays.  Use
  52.      ggggllllAAAArrrrrrrraaaayyyyEEEElllleeeemmmmeeeennnntttt to specify primitives by indexing vertexes and vertex
  53.      attributes  and ggggllllDDDDrrrraaaawwwwEEEElllleeeemmmmeeeennnnttttssss to construct a sequence of primitives by
  54.      indexing vertexes and vertex attributes.
  55.  
  56. NNNNOOOOTTTTEEEESSSS
  57.      ggggllllVVVVeeeerrrrtttteeeexxxxPPPPooooiiiinnnntttteeeerrrr is available only if the GL version is 1.1 or greater.
  58.  
  59.  
  60.  
  61.  
  62.  
  63.                                                                         PPPPaaaaggggeeee 1111
  64.  
  65.  
  66.  
  67.  
  68.  
  69.  
  70. ggggllllVVVVeeeerrrrtttteeeexxxxPPPPooooiiiinnnntttteeeerrrr((((3333GGGG))))            OOOOppppeeeennnnGGGGLLLL RRRReeeeffffeeeerrrreeeennnncccceeee            ggggllllVVVVeeeerrrrtttteeeexxxxPPPPooooiiiinnnntttteeeerrrr((((3333GGGG))))
  71.  
  72.  
  73.  
  74.      The vertex array is initially disabled and isn't accessed when
  75.      ggggllllAAAArrrrrrrraaaayyyyEEEElllleeeemmmmeeeennnntttt, ggggllllDDDDrrrraaaawwwwEEEElllleeeemmmmeeeennnnttttssss or ggggllllDDDDrrrraaaawwwwAAAArrrrrrrraaaayyyyssss is called.
  76.  
  77.      Execution of ggggllllVVVVeeeerrrrtttteeeexxxxPPPPooooiiiinnnntttteeeerrrr is not allowed between the execution of
  78.      ggggllllBBBBeeeeggggiiiinnnn and the corresponding execution of ggggllllEEEEnnnndddd, but an error may or may
  79.      not be generated. If no error is generated, the operation is undefined.
  80.  
  81.      ggggllllVVVVeeeerrrrtttteeeexxxxPPPPooooiiiinnnntttteeeerrrr is typically implemented on the client side.
  82.  
  83.      Vertex array parameters are client-side state and are therefore not saved
  84.      or restored by ggggllllPPPPuuuusssshhhhAAAAttttttttrrrriiiibbbb and ggggllllPPPPooooppppAAAAttttttttrrrriiiibbbb.  Use ggggllllPPPPuuuusssshhhhCCCClllliiiieeeennnnttttAAAAttttttttrrrriiiibbbb and
  85.      ggggllllPPPPooooppppCCCClllliiiieeeennnnttttAAAAttttttttrrrriiiibbbb instead.
  86.  
  87. EEEERRRRRRRROOOORRRRSSSS
  88.      GGGGLLLL____IIIINNNNVVVVAAAALLLLIIIIDDDD____VVVVAAAALLLLUUUUEEEE is generated if _s_i_z_e is not 2, 3, or 4.
  89.  
  90.      GGGGLLLL____IIIINNNNVVVVAAAALLLLIIIIDDDD____EEEENNNNUUUUMMMM is generated if _t_y_p_e is is not an accepted value.
  91.  
  92.      GGGGLLLL____IIIINNNNVVVVAAAALLLLIIIIDDDD____VVVVAAAALLLLUUUUEEEE is generated if _s_t_r_i_d_e is negative.
  93.  
  94. AAAASSSSSSSSOOOOCCCCIIIIAAAATTTTEEEEDDDD GGGGEEEETTTTSSSS
  95.      ggggllllIIIIssssEEEEnnnnaaaabbbblllleeeedddd with argument GGGGLLLL____VVVVEEEERRRRTTTTEEEEXXXX____AAAARRRRRRRRAAAAYYYY
  96.      ggggllllGGGGeeeetttt with argument GGGGLLLL____VVVVEEEERRRRTTTTEEEEXXXX____AAAARRRRRRRRAAAAYYYY____SSSSIIIIZZZZEEEE
  97.      ggggllllGGGGeeeetttt with argument GGGGLLLL____VVVVEEEERRRRTTTTEEEEXXXX____AAAARRRRRRRRAAAAYYYY____TTTTYYYYPPPPEEEE
  98.      ggggllllGGGGeeeetttt with argument GGGGLLLL____VVVVEEEERRRRTTTTEEEEXXXX____AAAARRRRRRRRAAAAYYYY____SSSSTTTTRRRRIIIIDDDDEEEE
  99.      ggggllllGGGGeeeettttPPPPooooiiiinnnntttteeeerrrrvvvv with argument GGGGLLLL____VVVVEEEERRRRTTTTEEEEXXXX____AAAARRRRRRRRAAAAYYYY____PPPPOOOOIIIINNNNTTTTEEEERRRR
  100.  
  101.  
  102. MMMMAAAACCCCHHHHIIIINNNNEEEE DDDDEEEEPPPPEEEENNNNDDDDEEEENNNNCCCCIIIIEEEESSSS
  103.      On RRRReeeeaaaalllliiiittttyyyyEEEEnnnnggggiiiinnnneeee, RRRReeeeaaaalllliiiittttyyyyEEEEnnnnggggiiiinnnneeee2222, and VVVVTTTTXXXX systems, do not enable or
  104.      disable GGGGLLLL____VVVVEEEERRRRTTTTEEEEXXXX____AAAARRRRRRRRAAAAYYYY, GGGGLLLL____VVVVEEEERRRRTTTTEEEEXXXX____AAAARRRRRRRRAAAAYYYY____EEEEXXXXTTTT, GGGGLLLL____NNNNOOOORRRRMMMMAAAALLLL____AAAARRRRRRRRAAAAYYYY,
  105.      GGGGLLLL____NNNNOOOORRRRMMMMAAAALLLL____AAAARRRRRRRRAAAAYYYY____EEEEXXXXTTTT, GGGGLLLL____CCCCOOOOLLLLOOOORRRR____AAAARRRRRRRRAAAAYYYY, GGGGLLLL____CCCCOOOOLLLLOOOORRRR____AAAARRRRRRRRAAAAYYYY____EEEEXXXXTTTT,
  106.      GGGGLLLL____IIIINNNNDDDDEEEEXXXX____AAAARRRRRRRRAAAAYYYY,GGGGLLLL____IIIINNNNDDDDEEEEXXXX____AAAARRRRRRRRAAAAYYYY____EEEEXXXXTTTT, GGGGLLLL____TTTTEEEEXXXXTTTTUUUURRRREEEE____CCCCOOOOOOOORRRRDDDD____AAAARRRRRRRRAAAAYYYY,
  107.      GGGGLLLL____TTTTEEEEXXXXTTTTUUUURRRREEEE____CCCCOOOOOOOORRRRDDDD____AAAARRRRRRRRAAAAYYYY____EEEEXXXXTTTT, GGGGLLLL____EEEEDDDDGGGGEEEE____FFFFLLLLAAAAGGGG____AAAARRRRRRRRAAAAYYYY or GGGGLLLL____EEEEDDDDGGGGEEEE____FFFFLLLLAAAAGGGG____AAAARRRRRRRRAAAAYYYY____EEEEXXXXTTTT
  108.      between a call to ggggllllNNNNeeeewwwwLLLLiiiisssstttt and the corresponding call to ggggllllEEEEnnnnddddLLLLiiiisssstttt.
  109.      Instead, enable or disable before the call to ggggllllNNNNeeeewwwwLLLLiiiisssstttt.
  110.  
  111.      On IIIInnnnffffiiiinnnniiiitttteeeeRRRReeeeaaaalllliiiittttyyyy systems it is particularly important to minimize the
  112.      amount of data transferred from the application to the graphics pipe,
  113.      since the host-to-pipe bandwidth limit can cause a performance
  114.      bottleneck.  One way to reduce the amount of data transferred per vertex
  115.      is to use properly-aligned byte and short data types whenever possible.
  116.      Accordingly, the EEEEXXXXTTTT____vvvveeeerrrrtttteeeexxxx____aaaarrrrrrrraaaayyyy extension on IIIInnnnffffiiiinnnniiiitttteeeeRRRReeeeaaaalllliiiittttyyyy systems
  117.      has been optimized for vertex information packed into the following data
  118.      structures.  (Note: v represents vertex coordinates, c represents color
  119.      components, n represents normal coordinates, and t represents texture
  120.      coordinates.  Normals must have unit length.)
  121.  
  122.           struct {GLfloat v[3];}
  123.           struct {GLubyte c[4]; GLfloat v[3];}
  124.           struct {GLshort n[3]; GLfloat v[3];}
  125.           struct {GLubyte c[4]; GLshort n[3]; GLfloat v[3];}
  126.  
  127.  
  128.  
  129.                                                                         PPPPaaaaggggeeee 2222
  130.  
  131.  
  132.  
  133.  
  134.  
  135.  
  136. ggggllllVVVVeeeerrrrtttteeeexxxxPPPPooooiiiinnnntttteeeerrrr((((3333GGGG))))            OOOOppppeeeennnnGGGGLLLL RRRReeeeffffeeeerrrreeeennnncccceeee            ggggllllVVVVeeeerrrrtttteeeexxxxPPPPooooiiiinnnntttteeeerrrr((((3333GGGG))))
  137.  
  138.  
  139.  
  140.           struct {GLshort t[2]; GLfloat v[3];}
  141.           struct {GLshort t[2]; GLubyte c[4]; GLfloat v[3];}
  142.           struct {GLshort t[2]; GLshort n[3]; GLfloat v[3];}
  143.           struct {GLshort t[2]; GLubyte c[4]; GLshort n[3]; GLfloat v[3];}
  144.           struct {GLfloat t[2]; GLfloat v[3];}
  145.           struct {GLfloat t[2]; GLubyte c[4]; GLfloat v[3];}
  146.           struct {GLfloat t[2]; GLshort n[3]; GLfloat v[3];}
  147.           struct {GLfloat t[2]; GLubyte c[4]; GLshort n[3]; GLfloat v[3];}
  148.  
  149.      Application-specific fields may be added to these structures, provided
  150.      that all the fields described above retain their relative order and word
  151.      alignment.
  152.  
  153.      An additional constraint applies when ggggllllTTTTeeeexxxxGGGGeeeennnn is being used.  The
  154.      implementation normally generates all four texture coordinates in
  155.      parallel, and must take special action to generate just a subset of the
  156.      four coordinates.  Therefore performance is best when none of the texture
  157.      coordinates are being generated, or when all of them are being generated.
  158.      For example, when using 2D texturing (generating s and t coordinates) it
  159.      will be faster to enable texture coordinate generation for the r and q
  160.      coordinates as well as s and t.  Choose a texture generation mode of
  161.      GGGGLLLL____OOOOBBBBJJJJEEEECCCCTTTT____LLLLIIIINNNNEEEEAAAARRRR and use the plane equations (0,0,0,0) and (0,0,0,1) for
  162.      r and q, respectively.
  163.  
  164.      Using these structures on IIIInnnnffffiiiinnnniiiitttteeeeRRRReeeeaaaalllliiiittttyyyy systems can improve performance
  165.      considerably, compared to structures in which all values are single-
  166.      precision floating point.
  167.  
  168.  
  169. SSSSEEEEEEEE AAAALLLLSSSSOOOO
  170.      ggggllllAAAArrrrrrrraaaayyyyEEEElllleeeemmmmeeeennnntttt, ggggllllCCCCoooolllloooorrrrPPPPooooiiiinnnntttteeeerrrr, ggggllllDDDDrrrraaaawwwwAAAArrrrrrrraaaayyyyssss, ggggllllDDDDrrrraaaawwwwEEEElllleeeemmmmeeeennnnttttssss,
  171.      ggggllllDDDDrrrraaaawwwwRRRRaaaannnnggggeeeeEEEElllleeeemmmmeeeennnnttttssss, ggggllllEEEEddddggggeeeeFFFFllllaaaaggggPPPPooooiiiinnnntttteeeerrrr, ggggllllEEEEnnnnaaaabbbblllleeee, ggggllllGGGGeeeettttPPPPooooiiiinnnntttteeeerrrrvvvv,
  172.      ggggllllIIIInnnnddddeeeexxxxPPPPooooiiiinnnntttteeeerrrr, ggggllllIIIInnnntttteeeerrrrlllleeeeaaaavvvveeeeddddAAAArrrrrrrraaaayyyyssss, ggggllllNNNNoooorrrrmmmmaaaallllPPPPooooiiiinnnntttteeeerrrr, ggggllllPPPPooooppppCCCClllliiiieeeennnnttttAAAAttttttttrrrriiiibbbb,
  173.      ggggllllPPPPuuuusssshhhhCCCClllliiiieeeennnnttttAAAAttttttttrrrriiiibbbb, ggggllllTTTTeeeexxxxCCCCoooooooorrrrddddPPPPooooiiiinnnntttteeeerrrr
  174.  
  175.  
  176.  
  177.  
  178.  
  179.  
  180.  
  181.  
  182.  
  183.  
  184.  
  185.  
  186.  
  187.  
  188.  
  189.  
  190.  
  191.  
  192.  
  193.  
  194.  
  195.                                                                         PPPPaaaaggggeeee 3333
  196.  
  197.  
  198.  
  199.