Py API Docs: New Example for off screen rendering
authorJacques Lucke <mail@jlucke.com>
Tue, 13 Nov 2018 15:38:12 +0000 (16:38 +0100)
committerJacques Lucke <mail@jlucke.com>
Tue, 13 Nov 2018 15:38:12 +0000 (16:38 +0100)
doc/python_api/examples/gpu.10.py [new file with mode: 0644]

diff --git a/doc/python_api/examples/gpu.10.py b/doc/python_api/examples/gpu.10.py
new file mode 100644 (file)
index 0000000..aa5574c
--- /dev/null
@@ -0,0 +1,38 @@
+"""
+Rendering the 3D View into a Texture
+------------------------------------
+
+The scene has to have a camera for this example to work.
+You could also make this independent of a specific camera, but Blender does not expose good functions to create view and projection matrices yet.
+"""
+import bpy
+import bgl
+import gpu
+from gpu_extras.presets import draw_texture_2d
+
+WIDTH = 512
+HEIGHT = 256
+
+offscreen = gpu.types.GPUOffScreen(WIDTH, HEIGHT)
+
+def draw():
+    context = bpy.context
+    scene = context.scene
+
+    view_matrix = scene.camera.matrix_world.inverted()
+
+    projection_matrix = scene.camera.calc_matrix_camera(
+        context.depsgraph, x=WIDTH, y=HEIGHT)
+
+    offscreen.draw_view3d(
+        scene,
+        context.view_layer,
+        context.space_data,
+        context.region,
+        view_matrix,
+        projection_matrix)
+
+    bgl.glDisable(bgl.GL_DEPTH_TEST)
+    draw_texture_2d(offscreen.color_texture, (10, 10), WIDTH, HEIGHT)
+
+bpy.types.SpaceView3D.draw_handler_add(draw, (), 'WINDOW', 'POST_PIXEL')
\ No newline at end of file