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.glMatrixMode(GL.GL_MODELVIEW)
|
||||||
GL.glPopMatrix()
|
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):
|
class PolygonModeRenderNode(RenderstateRenderNode):
|
||||||
def enter(self):
|
def enter(self):
|
||||||
@ -327,6 +347,14 @@ class DepthMaskRenderNode(RenderstateRenderNode):
|
|||||||
def exit(self):
|
def exit(self):
|
||||||
GL.glPopAttrib()
|
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):
|
class BoxRenderNode(RenderNode):
|
||||||
def drawSelf(self):
|
def drawSelf(self):
|
||||||
box = self.sceneNode.box
|
box = self.sceneNode.box
|
||||||
|
@ -179,12 +179,28 @@ class TranslateNode(Node):
|
|||||||
self._translateOffset = value
|
self._translateOffset = value
|
||||||
self.dirty = True
|
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):
|
class DepthMaskNode(Node):
|
||||||
RenderNodeClass = rendergraph.DepthMaskRenderNode
|
RenderNodeClass = rendergraph.DepthMaskRenderNode
|
||||||
mask = False
|
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):
|
class ClearNode(Node):
|
||||||
RenderNodeClass = rendergraph.ClearRenderNode
|
RenderNodeClass = rendergraph.ClearRenderNode
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user