Newer
Older
"""
Viewport Preview Drawing
************************
Routines to draw in the viewport the result
that is projected in the HMD
"""
from .opengl_helper import (
view_reset,
view_setup,
)
from bgl import *
"_color_object_left",
"_color_object_right",
def init(self, color_object_left, color_object_right):
:param color_object_left: 2D Texture binding ID (bind to the Framebuffer Object) for left eye
:type color_object_left: bgl.GLuint
:param color_object_right: 2D Texture binding ID (bind to the Framebuffer Object) for right eye
:type color_object_right: bgl.GLuint
self.update(color_object_left, color_object_right)
def quit(self):
"""
Destroy preview window
"""
def update(self, color_object_left, color_object_right):
:param color_object_left: 2D Texture binding ID (bind to the Framebuffer Object) for left eye
:type color_object_left: bgl.GLuint
:param color_object_right: 2D Texture binding ID (bind to the Framebuffer Object) for right eye
:type color_object_right: bgl.GLuint
self._color_object_left = color_object_left
self._color_object_right = color_object_right
def _drawRectangle(self, eye):
texco = [(1, 1), (0, 1), (0, 0), (1,0)]
verco = [[(0.0, 1.0), (-1.0, 1.0), (-1.0, -1.0), ( 0.0, -1.0)],
[(1.0, 1.0), ( 0.0, 1.0), ( 0.0, -1.0), ( 1.0, -1.0)]]
glPolygonMode(GL_FRONT_AND_BACK , GL_FILL)
glColor4f(1.0, 1.0, 1.0, 0.0)
glBegin(GL_QUADS)
for i in range(4):
glTexCoord3f(texco[i][0], texco[i][1], 0.0)
glVertex2f(verco[eye][i][0], verco[eye][i][1])
glEnd()
def loop(self, scale):
if not scale:
return
if scale != 100:
viewport = Buffer(GL_INT, 4)
glGetIntegerv(GL_VIEWPORT, viewport)
width = int(scale * 0.01 * viewport[2])
height = int(scale * 0.01 * viewport[3])
glViewport(viewport[0], viewport[1], width, height)
glScissor(viewport[0], viewport[1], width, height)
view_setup()
glEnable(GL_TEXTURE_2D)
glActiveTexture(GL_TEXTURE0)
glBindTexture(GL_TEXTURE_2D, self._color_object_left)
self._drawRectangle(0)
glBindTexture(GL_TEXTURE_2D, self._color_object_right)
self._drawRectangle(1)
glBindTexture(GL_TEXTURE_2D, act_tex[0])
glDisable(GL_TEXTURE_2D)
if scale != 100:
glViewport(viewport[0], viewport[1], viewport[2], viewport[3])
glScissor(viewport[0], viewport[1], viewport[2], viewport[3])