From 513aacbdb6e425005eee6d83fdca0f06f6e6e374 Mon Sep 17 00:00:00 2001 From: Sergey Sharybin Date: Tue, 11 Apr 2017 15:28:35 +0200 Subject: [PATCH] Use immediate mode API for OpenColorIO --- build_files/cmake/macros.cmake | 2 +- intern/opencolorio/CMakeLists.txt | 1 + intern/opencolorio/ocio_impl_glsl.cc | 7 +++++-- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/build_files/cmake/macros.cmake b/build_files/cmake/macros.cmake index 27728917af5..7f46c40e27a 100644 --- a/build_files/cmake/macros.cmake +++ b/build_files/cmake/macros.cmake @@ -599,7 +599,6 @@ function(SETUP_BLENDER_SORTED_LIBS) bf_bmesh bf_gpu bf_draw - bf_intern_gawain bf_blenloader bf_blenkernel bf_physics @@ -656,6 +655,7 @@ function(SETUP_BLENDER_SORTED_LIBS) cycles_util cycles_subd bf_intern_opencolorio + bf_intern_gawain bf_intern_eigen extern_rangetree extern_wcwidth diff --git a/intern/opencolorio/CMakeLists.txt b/intern/opencolorio/CMakeLists.txt index f7e8d909f2c..d2dd8a3c419 100644 --- a/intern/opencolorio/CMakeLists.txt +++ b/intern/opencolorio/CMakeLists.txt @@ -27,6 +27,7 @@ set(INC . ../glew-mx ../guardedalloc + ../gawain ../../source/blender/blenlib ) diff --git a/intern/opencolorio/ocio_impl_glsl.cc b/intern/opencolorio/ocio_impl_glsl.cc index 9dba37f27eb..819dd6632b3 100644 --- a/intern/opencolorio/ocio_impl_glsl.cc +++ b/intern/opencolorio/ocio_impl_glsl.cc @@ -48,6 +48,9 @@ # pragma warning(pop) #endif +extern "C" { +#include "gawain/immediate.h" +} using namespace OCIO_NAMESPACE; @@ -408,7 +411,7 @@ bool OCIOImpl::setupGLSLDraw(OCIO_GLSLDrawState **state_r, OCIO_ConstProcessorRc glActiveTexture(GL_TEXTURE0); - glUseProgram(state->program); + immBindProgram(state->program); glUniform1i(glGetUniformLocation(state->program, "image_texture"), 0); glUniform1i(glGetUniformLocation(state->program, "lut3d_texture"), 1); @@ -461,7 +464,7 @@ void OCIOImpl::finishGLSLDraw(OCIO_GLSLDrawState *state) { glActiveTexture(state->last_texture_unit); glBindTexture(GL_TEXTURE_2D, state->last_texture); - glUseProgram(0); + immUnbindProgram(); } void OCIOImpl::freeGLState(struct OCIO_GLSLDrawState *state)