Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'source/blender/gpu/opengl/gl_state.cc')
-rw-r--r--source/blender/gpu/opengl/gl_state.cc22
1 files changed, 13 insertions, 9 deletions
diff --git a/source/blender/gpu/opengl/gl_state.cc b/source/blender/gpu/opengl/gl_state.cc
index 3e3695e0b48..7dc3e44c516 100644
--- a/source/blender/gpu/opengl/gl_state.cc
+++ b/source/blender/gpu/opengl/gl_state.cc
@@ -26,6 +26,7 @@
#include "glew-mx.h"
+#include "gl_context.hh"
#include "gl_state.hh"
using namespace blender::gpu;
@@ -53,6 +54,9 @@ GLStateManager::GLStateManager(void) : GPUStateManager()
glEnable(GL_PRIMITIVE_RESTART_FIXED_INDEX);
}
+ /* Limits. */
+ glGetFloatv(GL_ALIASED_LINE_WIDTH_RANGE, line_width_range_);
+
/* Force update using default state. */
current_ = ~state;
current_mutable_ = ~mutable_state;
@@ -65,23 +69,23 @@ void GLStateManager::set_state(const GPUState &state)
GPUState changed = state ^ current_;
if (changed.blend != 0) {
- set_blend(state.blend);
+ set_blend((eGPUBlend)state.blend);
}
if (changed.write_mask != 0) {
- set_write_mask(state.write_mask);
+ set_write_mask((eGPUWriteMask)state.write_mask);
}
if (changed.depth_test != 0) {
- set_depth_test(state.depth_test);
+ set_depth_test((eGPUDepthTest)state.depth_test);
}
if (changed.stencil_test != 0 || changed.stencil_op != 0) {
- set_stencil_test(state.stencil_test, state.stencil_op);
- set_stencil_mask(state.stencil_test, mutable_state);
+ set_stencil_test((eGPUStencilTest)state.stencil_test, (eGPUStencilOp)state.stencil_op);
+ set_stencil_mask((eGPUStencilTest)state.stencil_test, mutable_state);
}
if (changed.clip_distances != 0) {
set_clip_distances(state.clip_distances, current_.clip_distances);
}
if (changed.culling_test != 0) {
- set_backface_culling(state.culling_test);
+ set_backface_culling((eGPUFaceCullTest)state.culling_test);
}
if (changed.logic_op_xor != 0) {
set_logic_op(state.logic_op_xor);
@@ -90,7 +94,7 @@ void GLStateManager::set_state(const GPUState &state)
set_facing(state.invert_facing);
}
if (changed.provoking_vert != 0) {
- set_provoking_vert(state.provoking_vert);
+ set_provoking_vert((eGPUProvokingVertex)state.provoking_vert);
}
if (changed.shadow_bias != 0) {
set_shadow_bias(state.shadow_bias);
@@ -150,7 +154,7 @@ void GLStateManager::set_mutable_state(const GPUStateMutable &state)
if (changed.line_width != 0) {
/* TODO remove, should use wide line shader. */
- glLineWidth(clamp_f(state.line_width, 1.0f, GPU_max_line_width()));
+ glLineWidth(clamp_f(state.line_width, line_width_range_[0], line_width_range_[1]));
}
if (changed.depth_range[0] != 0 || changed.depth_range[1] != 0) {
@@ -160,7 +164,7 @@ void GLStateManager::set_mutable_state(const GPUStateMutable &state)
if (changed.stencil_compare_mask != 0 || changed.stencil_reference != 0 ||
changed.stencil_write_mask != 0) {
- set_stencil_mask(current_.stencil_test, state);
+ set_stencil_mask((eGPUStencilTest)current_.stencil_test, state);
}
current_mutable_ = state;