API Docs: gpu api introduction + examples
This commit is contained in:
47
doc/python_api/examples/gpu.1.py
Normal file
47
doc/python_api/examples/gpu.1.py
Normal file
@@ -0,0 +1,47 @@
|
||||
"""
|
||||
Geometry Batches
|
||||
++++++++++++++++
|
||||
|
||||
To draw geometry using the gpu module you need to create a :class:`gpu.types.GPUBatch` object.
|
||||
Batches contain a sequence of points, lines or triangles and associated geometry attributes.
|
||||
|
||||
A batch can be drawn multiple times, so they should be cached whenever possible.
|
||||
This makes them much faster than using the legacy `glBegin` and `glEnd` method, which would recreate the geometry data every time.
|
||||
|
||||
Every batch has a so called `Vertex Buffer`.
|
||||
It contains the attributes for every vertex.
|
||||
Typical attributes are `position`, `color` and `uv`.
|
||||
Which attributes the vertex buffer of a batch contains, depends on the shader that will be used to process the batch.
|
||||
|
||||
Shaders
|
||||
+++++++
|
||||
|
||||
A shader is a small program that tells the GPU how to draw batch geometry.
|
||||
There are a couple of built-in shaders for the most common tasks.
|
||||
Built-in shaders can be accessed with :class:`gpu.shader.from_builtin`.
|
||||
Every built-in shader has an identifier (e.g. `2D_UNIFORM_COLOR` and `3D_FLAT_COLOR`).
|
||||
|
||||
Custom shaders can be used as well.
|
||||
The :class:`gpu.types.GPUShader` takes the shader code as input and compiles it.
|
||||
Every shader has at least a vertex and a fragment shader.
|
||||
Optionally a geometry shader can be used as well.
|
||||
|
||||
.. note::
|
||||
A `GPUShader` is actually a `program` in OpenGL terminology.
|
||||
|
||||
Shaders define a set of `uniforms` and `attributes`.
|
||||
**Uniforms** are properties that are constant for every vertex in a batch.
|
||||
They have to be set before the batch but after the shader has been bound.
|
||||
**Attributes** are properties that can be different for every vertex.
|
||||
|
||||
The attributes and uniforms used by built-in shaders are listed here: :class:`gpu.shader`
|
||||
|
||||
A batch can only be processed/drawn by a shader when it provides all the attributes that the shader specifies.
|
||||
|
||||
Examples
|
||||
++++++++
|
||||
|
||||
To try these examples, just copy them into Blenders text editor and execute them.
|
||||
To keep the examples relatively small, they just register a draw function that can't easily be removed anymore.
|
||||
Blender has to be restarted in order to delete the draw handlers.
|
||||
"""
|
||||
Reference in New Issue
Block a user