draw_elements_base_vertex.py :  » Game-2D-3D » PyOpenGL » PyOpenGL-3.0.1 » OpenGL » GL » ARB » Python Open Source

Home
Python Open Source
1.3.1.2 Python
2.Ajax
3.Aspect Oriented
4.Blog
5.Build
6.Business Application
7.Chart Report
8.Content Management Systems
9.Cryptographic
10.Database
11.Development
12.Editor
13.Email
14.ERP
15.Game 2D 3D
16.GIS
17.GUI
18.IDE
19.Installer
20.IRC
21.Issue Tracker
22.Language Interface
23.Log
24.Math
25.Media Sound Audio
26.Mobile
27.Network
28.Parser
29.PDF
30.Project Management
31.RSS
32.Search
33.Security
34.Template Engines
35.Test
36.UML
37.USB Serial
38.Web Frameworks
39.Web Server
40.Web Services
41.Web Unit
42.Wiki
43.Windows
44.XML
Python Open Source » Game 2D 3D » PyOpenGL 
PyOpenGL » PyOpenGL 3.0.1 » OpenGL » GL » ARB » draw_elements_base_vertex.py
'''OpenGL extension ARB.draw_elements_base_vertex

This module customises the behaviour of the 
OpenGL.raw.GL.ARB.draw_elements_base_vertex to provide a more 
Python-friendly API

Overview (from thespec import 
  
  This extension provides a method to specify a "base vertex offset"
  value which is effectively added to every vertex index that is
  transferred through DrawElements.
  
  This mechanism can be used to decouple a set of indices from the import 
  actual vertex array that it is referencing. This is useful if an
  application stores multiple indexed models in a single vertex array.
  The same index array can be used to draw the model no matter where
  it ends up in a larger vertex array simply by changing the base
  vertex value. Without this functionality, it would be necessary to
  rebind all the vertex attributes every time geometry is switched and
  this can have larger performance penalty.
  
  For example consider the (very contrived and simple) example of
  drawing two triangles to form a quad. In the typical example you
  have the following setup:
  
        vertices                indices
       ----------                -----
    0 | (-1,  1) |            0 |  0  |
    1 | (-1, -1) |            1 |  1  |
    2 | ( 1, -1) |            2 |  2  |
    3 | ( 1,  1) |            3 |  3  |
       ----------             4 |  0  |
                              5 |  2  |
                                 -----
  which is normally rendered with the call
  
     DrawElements(TRIANGLES, 6, UNSIGNED_BYTE, &indices).
  
  Now consider the case where the vertices you want to draw are not at
  the start of a vertex array but are instead located at offset 100
  into a larger array:
  
         vertices2             indices2
         ----------             -----
            ....             0 | 100 |
    100 | (-1,  1) |         1 | 101 |
    101 | (-1, -1) |         2 | 102 |
    102 | ( 1, -1) |         3 | 103 |
    103 | ( 1,  1) |         4 | 100 |
            ....             5 | 102 |
         ----------             -----
  
  The typical choices for rendering this are to rebind your vertex
  attributes with an additional offset of 100*stride, or to create an
  new array of indices (as indices2 in the example). However both
  rebinding vertex attributes and rebuilding index arrays can be quite
  costly activities.
  
  With the new drawing commands introduced by this extension you can
  instead draw using vertices2 and the new draw call:
  
     DrawElementsBaseVertex(TRIANGLES, 6, UNSIGNED_BYTE, &indices, 100)

The official definition of this extension is available here:
http://www.opengl.org/registry/specs/ARB/draw_elements_base_vertex.txt
'''
from OpenGL import platform,constants,constant,arrays
from OpenGL import extensions,wrapper
from OpenGL.GL import glget
import ctypes
from OpenGL.raw.GL.ARB.draw_elements_base_vertex import *
### END AUTOGENERATED SECTION
www.java2java.com | Contact Us
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.