From 3aa30406dd0f862f8360741ff77118505aa93302 Mon Sep 17 00:00:00 2001 From: Jacques Lucke Date: Tue, 13 Nov 2018 16:38:12 +0100 Subject: [PATCH] Py API Docs: New Example for off screen rendering --- doc/python_api/examples/gpu.10.py | 38 +++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 doc/python_api/examples/gpu.10.py diff --git a/doc/python_api/examples/gpu.10.py b/doc/python_api/examples/gpu.10.py new file mode 100644 index 00000000000..aa5574c44bb --- /dev/null +++ b/doc/python_api/examples/gpu.10.py @@ -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