Add scenegraph nodes for matrix rotate and depth test function.

This commit is contained in:
David Vierra 2015-07-11 22:43:09 -10:00
parent 514b3155d1
commit 421ae4f389
2 changed files with 44 additions and 0 deletions

View File

@ -211,6 +211,26 @@ class TranslateRenderNode(RenderstateRenderNode):
GL.glMatrixMode(GL.GL_MODELVIEW)
GL.glPopMatrix()
class RotateRenderNode(RenderstateRenderNode):
def __init__(self, sceneNode):
"""
:type sceneNode: TranslateNode
"""
super(RotateRenderNode, self).__init__(sceneNode)
def __repr__(self):
return "RotateRenderNode(%s, %s)" % (self.sceneNode.degrees,self.sceneNode.axis)
def enter(self):
GL.glMatrixMode(GL.GL_MODELVIEW)
GL.glPushMatrix()
GL.glRotate(self.sceneNode.degrees, *self.sceneNode.axis)
def exit(self):
GL.glMatrixMode(GL.GL_MODELVIEW)
GL.glPopMatrix()
class PolygonModeRenderNode(RenderstateRenderNode):
def enter(self):
@ -327,6 +347,14 @@ class DepthMaskRenderNode(RenderstateRenderNode):
def exit(self):
GL.glPopAttrib()
class DepthFuncRenderNode(RenderstateRenderNode):
def enter(self):
GL.glPushAttrib(GL.GL_DEPTH_BUFFER_BIT)
GL.glDepthFunc(self.sceneNode.func)
def exit(self):
GL.glPopAttrib()
class BoxRenderNode(RenderNode):
def drawSelf(self):
box = self.sceneNode.box

View File

@ -179,12 +179,28 @@ class TranslateNode(Node):
self._translateOffset = value
self.dirty = True
class RotateNode(Node):
RenderNodeClass = rendergraph.RotateRenderNode
def __init__(self, degrees, axis):
super(RotateNode, self).__init__()
self.degrees = degrees
self.axis = axis
class DepthMaskNode(Node):
RenderNodeClass = rendergraph.DepthMaskRenderNode
mask = False
class DepthFuncNode(Node):
RenderNodeClass = rendergraph.DepthFuncRenderNode
def __init__(self, func=GL.GL_LESS):
super(DepthFuncNode, self).__init__()
self.func = func
class ClearNode(Node):
RenderNodeClass = rendergraph.ClearRenderNode