diff options
author | Campbell Barton <ideasman42@gmail.com> | 2017-05-02 19:50:29 +0300 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2017-05-02 19:52:39 +0300 |
commit | 3f567535da163df7e77fe9438cc80fb8b2c67b87 (patch) | |
tree | 7b883ebf63eab2be1d0e34ae0fa434ff48a14a18 /source/blender/gpu/intern | |
parent | 2b0f02057f457acec1ed9444ee7d833ab26d0d33 (diff) |
Draw Manager: OpenGL render support
Works for clay-engine but doesn't draw objects with eevee.
Diffstat (limited to 'source/blender/gpu/intern')
-rw-r--r-- | source/blender/gpu/intern/gpu_framebuffer.c | 9 | ||||
-rw-r--r-- | source/blender/gpu/intern/gpu_viewport.c | 18 |
2 files changed, 27 insertions, 0 deletions
diff --git a/source/blender/gpu/intern/gpu_framebuffer.c b/source/blender/gpu/intern/gpu_framebuffer.c index 52e9a6aec3a..09e80eeac9e 100644 --- a/source/blender/gpu/intern/gpu_framebuffer.c +++ b/source/blender/gpu/intern/gpu_framebuffer.c @@ -682,3 +682,12 @@ int GPU_offscreen_color_texture(const GPUOffScreen *ofs) return GPU_texture_opengl_bindcode(ofs->color); } +/* only to be used by viewport code! */ +void GPU_offscreen_viewport_data_get( + GPUOffScreen *ofs, + GPUFrameBuffer **r_fb, GPUTexture **r_color, GPUTexture **r_depth) +{ + *r_fb = ofs->fb; + *r_color = ofs->color; + *r_depth = ofs->depth; +}
\ No newline at end of file diff --git a/source/blender/gpu/intern/gpu_viewport.c b/source/blender/gpu/intern/gpu_viewport.c index 94c2b022e86..98c3613e1e2 100644 --- a/source/blender/gpu/intern/gpu_viewport.c +++ b/source/blender/gpu/intern/gpu_viewport.c @@ -83,6 +83,24 @@ GPUViewport *GPU_viewport_create(void) return viewport; } +GPUViewport *GPU_viewport_create_from_offscreen(struct GPUOffScreen *ofs) +{ + GPUViewport *viewport = GPU_viewport_create(); + GPU_offscreen_viewport_data_get(ofs, &viewport->fbl->default_fb, &viewport->txl->color, &viewport->txl->depth); + viewport->size[0] = GPU_offscreen_width(ofs); + viewport->size[1] = GPU_offscreen_height(ofs); + return viewport; +} +/** + * Clear vars assigned from offscreen, so we don't free data owned by `GPUOffScreen`. + */ +void GPU_viewport_clear_from_offscreen(GPUViewport *viewport) +{ + viewport->fbl->default_fb = NULL; + viewport->txl->color = NULL; + viewport->txl->depth = NULL; +} + void *GPU_viewport_engine_data_create(GPUViewport *viewport, void *engine_type) { LinkData *ld = MEM_callocN(sizeof(LinkData), "LinkData"); |