Commit af32ea8b authored by Dalai Felinto's avatar Dalai Felinto
Browse files

use preview scale and remove viewport from reset_view

parent d770ba7f
...@@ -109,7 +109,7 @@ def view_setup(): ...@@ -109,7 +109,7 @@ def view_setup():
gluLookAt(0.0, 0.0, 1.0, 0.0,0.0,0.0, 0.0,1.0,0.0) gluLookAt(0.0, 0.0, 1.0, 0.0,0.0,0.0, 0.0,1.0,0.0)
def view_reset(viewport): def view_reset():
# Get texture info # Get texture info
glMatrixMode(GL_PROJECTION) glMatrixMode(GL_PROJECTION)
glPopMatrix() glPopMatrix()
...@@ -120,8 +120,6 @@ def view_reset(viewport): ...@@ -120,8 +120,6 @@ def view_reset(viewport):
glMatrixMode(GL_MODELVIEW) glMatrixMode(GL_MODELVIEW)
glPopMatrix() glPopMatrix()
glViewport(viewport[0], viewport[1], viewport[2], viewport[3])
# ################## # ##################
# FBO related routines # FBO related routines
...@@ -237,7 +235,8 @@ class FBO: ...@@ -237,7 +235,8 @@ class FBO:
glDisable(GL_TEXTURE_2D) glDisable(GL_TEXTURE_2D)
glDisable(GL_DEPTH_TEST) glDisable(GL_DEPTH_TEST)
view_reset(viewport) view_reset()
glViewport(viewport[0], viewport[1], viewport[2], viewport[3])
# unbinding # unbinding
glBindFramebuffer(GL_FRAMEBUFFER, act_fbo[0]) glBindFramebuffer(GL_FRAMEBUFFER, act_fbo[0])
......
...@@ -286,7 +286,7 @@ def view_setup(): ...@@ -286,7 +286,7 @@ def view_setup():
gluLookAt(0.0, 0.0, 1.0, 0.0,0.0,0.0, 0.0,1.0,0.0) gluLookAt(0.0, 0.0, 1.0, 0.0,0.0,0.0, 0.0,1.0,0.0)
def view_reset(viewport): def view_reset():
# Get texture info # Get texture info
glMatrixMode(GL_PROJECTION) glMatrixMode(GL_PROJECTION)
glPopMatrix() glPopMatrix()
...@@ -297,8 +297,6 @@ def view_reset(viewport): ...@@ -297,8 +297,6 @@ def view_reset(viewport):
glMatrixMode(GL_MODELVIEW) glMatrixMode(GL_MODELVIEW)
glPopMatrix() glPopMatrix()
glViewport(viewport[0], viewport[1], viewport[2], viewport[3])
def draw_rectangle_rainbow(zed=0.0): def draw_rectangle_rainbow(zed=0.0):
texco = [(1, 1), (0, 1), (0, 0), (1,0)] texco = [(1, 1), (0, 1), (0, 0), (1,0)]
...@@ -371,7 +369,9 @@ def draw_callback_px(self, context): ...@@ -371,7 +369,9 @@ def draw_callback_px(self, context):
glUseProgram(0) glUseProgram(0)
glActiveTexture(act_tex[0]) glActiveTexture(act_tex[0])
glBindTexture(GL_TEXTURE_2D, 0) glBindTexture(GL_TEXTURE_2D, 0)
view_reset(self.viewport) view_reset()
glViewport(self.viewport[0], self.viewport[1], self.viewport[2], self.viewport[3])
glMatrixMode(GL_MODELVIEW) glMatrixMode(GL_MODELVIEW)
glTranslatef(-cam_pos[0], -cam_pos[1], -cam_pos[2]) glTranslatef(-cam_pos[0], -cam_pos[1], -cam_pos[2])
...@@ -54,7 +54,7 @@ class VirtualRealityDisplayOperator(bpy.types.Operator): ...@@ -54,7 +54,7 @@ class VirtualRealityDisplayOperator(bpy.types.Operator):
if event.type == 'TIMER': if event.type == 'TIMER':
self.loop() self.loop()
if vr.use_preview: if vr.preview_scale:
context.area.tag_redraw() context.area.tag_redraw()
return {'PASS_THROUGH'} return {'PASS_THROUGH'}
...@@ -167,8 +167,7 @@ class VirtualRealityDisplayOperator(bpy.types.Operator): ...@@ -167,8 +167,7 @@ class VirtualRealityDisplayOperator(bpy.types.Operator):
wm = context.window_manager wm = context.window_manager
vr = wm.virtual_reality vr = wm.virtual_reality
if vr.use_preview: self._preview.loop(vr.preview_scale)
self._preview.loop()
# ############################################################ # ############################################################
...@@ -181,11 +180,15 @@ class VirtualRealityInfo(bpy.types.PropertyGroup): ...@@ -181,11 +180,15 @@ class VirtualRealityInfo(bpy.types.PropertyGroup):
default=False, default=False,
) )
use_preview = bpy.props.BoolProperty( preview_scale = bpy.props.IntProperty(
name="Preview", name="Preview Scale",
default=False, min=0,
max=100,
default=100,
subtype='PERCENTAGE',
) )
# ############################################################ # ############################################################
# Callbacks # Callbacks
# ############################################################ # ############################################################
......
...@@ -59,47 +59,30 @@ class Preview: ...@@ -59,47 +59,30 @@ class Preview:
self._width = width self._width = width
self._height = height self._height = height
def _getScissor(self, viewport, offset_x, offset_y, width, height): def loop(self, scale):
"""
Fit scissor inside viewport
"""
scissor = [0,0,0,0]
scissor[0] = max(offset_x, viewport[0])
scissor[1] = max(offset_y, viewport[1])
scissor[2] = min(width, viewport[2] - (scissor[0] - viewport[0]))
scissor[3] = min(height, viewport[3] - (scissor[1] - viewport[1]))
return scissor
def loop(self):
""" """
Draw in the preview window Draw in the preview window
""" """
texture = self._texture if not scale:
width = self._width return
height = self._height
offset_x, offset_y = 100, 100 # this is window offset, not viewport offset texture = self._texture
act_tex = Buffer(GL_INT, 1) act_tex = Buffer(GL_INT, 1)
glGetIntegerv(GL_ACTIVE_TEXTURE, act_tex) glGetIntegerv(GL_ACTIVE_TEXTURE, act_tex)
viewport = Buffer(GL_INT, 4) if scale != 100:
glGetIntegerv(GL_VIEWPORT, viewport) viewport = Buffer(GL_INT, 4)
glGetIntegerv(GL_VIEWPORT, viewport)
glViewport( width = int(scale * 0.01 * viewport[2])
max(offset_x, viewport[0]), height = int(scale * 0.01 * viewport[3])
max(offset_x, viewport[1]),
width,
height,
)
scissor = self._getScissor(viewport, offset_x, offset_y, width, height) glViewport(viewport[0], viewport[1], width, height)
glScissor(scissor[0], scissor[1], scissor[2], scissor[3]) glScissor(viewport[0], viewport[1], width, height)
glEnable(GL_DEPTH_TEST) glEnable(GL_DEPTH_TEST)
glDepthFunc(GL_LESS) glDepthFunc(GL_LESS)
view_setup() view_setup()
...@@ -114,8 +97,9 @@ class Preview: ...@@ -114,8 +97,9 @@ class Preview:
glDisable(GL_TEXTURE_2D) glDisable(GL_TEXTURE_2D)
glDisable(GL_DEPTH_TEST) glDisable(GL_DEPTH_TEST)
view_reset(viewport) view_reset()
glViewport(viewport[0], viewport[1], viewport[2], viewport[3]) if scale != 100:
glScissor(viewport[0], viewport[1], viewport[2], viewport[3]) glViewport(viewport[0], viewport[1], viewport[2], viewport[3])
glScissor(viewport[0], viewport[1], viewport[2], viewport[3])
...@@ -23,8 +23,9 @@ class VirtualRealityPanel(bpy.types.Panel): ...@@ -23,8 +23,9 @@ class VirtualRealityPanel(bpy.types.Panel):
col.operator("view3d.virtual_reality_display", text="Virtual Reality", icon="PLAY").action='ENABLE' col.operator("view3d.virtual_reality_display", text="Virtual Reality", icon="PLAY").action='ENABLE'
else: else:
col.operator("view3d.virtual_reality_display", text="Virtual Reality", icon="X").action='DISABLE' col.operator("view3d.virtual_reality_display", text="Virtual Reality", icon="X").action='DISABLE'
col.separator() col.separator()
col.prop(vr, "use_preview") col.prop(vr, "preview_scale", text="Preview")
# ############################################################ # ############################################################
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment