Add scenegraph nodes for matrix rotate and depth test function.
This commit is contained in:
parent
514b3155d1
commit
421ae4f389
@ -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
|
||||
|
@ -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
|
||||
|
||||
|
Reference in New Issue
Block a user