Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何制作不同的Pyglet正交投影?_Python_Opengl_Pyglet_Opengl Compat - Fatal编程技术网

Python 如何制作不同的Pyglet正交投影?

Python 如何制作不同的Pyglet正交投影?,python,opengl,pyglet,opengl-compat,Python,Opengl,Pyglet,Opengl Compat,我制作了两个立方体的视口,但它们都是正面正交投影,我需要在其中的一个上从侧面进行。 这是一个绘图代码 draw_small是静态小立方体的绘图 大矮人画的是大立方体,可以移动、缩放和旋转 def on_draw(self) : self.clear() pgl.glClear(pgl.GL_COLOR_BUFFER_BIT | pgl.GL_DEPTH_BUFFER_BIT) pgl.glViewport(0, 0, 650, 500

我制作了两个立方体的视口,但它们都是正面正交投影,我需要在其中的一个上从侧面进行。 这是一个绘图代码 draw_small是静态小立方体的绘图 大矮人画的是大立方体,可以移动、缩放和旋转

    def on_draw(self) :

        self.clear()

        pgl.glClear(pgl.GL_COLOR_BUFFER_BIT | pgl.GL_DEPTH_BUFFER_BIT)

        pgl.glViewport(0, 0, 650, 500)
        pgl.glMatrixMode(pgl.GL_PROJECTION)
        pgl.glLoadIdentity()
        pgl.glOrtho(-1300 / 8, 1300 / 8, -1000 / 8, 1000 / 8, 100, 500)
        pgl.glMatrixMode(pgl.GL_MODELVIEW)
        pgl.glLoadIdentity
        pgl.glTranslatef(0, 0, -100)
        pgl.glPolygonMode(pgl.GL_FRONT_AND_BACK, pgl.GL_FILL)
        draw_small()

        pgl.glPushMatrix()
        pgl.glTranslatef(self.x, self.y, self.z)
        pgl.glRotatef(self.xRotation, 1, 0, 0)
        pgl.glRotatef(self.yRotation, 0, 1, 0)
        pgl.glRotatef(self.zRotation, 0, 0, 1)
        pgl.glScalef(self.zoom, self.zoom, self.zoom)

        if not transparant:
            pgl.glPolygonMode(pgl.GL_FRONT_AND_BACK, pgl.GL_FILL)
        else:
            ogl.glPolygonMode(pgl.GL_FRONT_AND_BACK, pgl.GL_LINE)

        draw_big()

        pgl.glPopMatrix()


        pgl.glViewport(650, 0, 650, 500)
        pgl.glMatrixMode(pgl.GL_PROJECTION)
        pgl.glLoadIdentity()
        pgl.glOrtho(-1300 / 8, 1300 / 8, -1000 / 8, 1000 / 8, 0, 500)
        pgl.glMatrixMode(pgl.GL_MODELVIEW)
        pgl.glLoadIdentity()
        pgl.glTranslatef(0, 0, -100)
        pgl.glPolygonMode(pgl.GL_FRONT_AND_BACK, pgl.GL_FILL)

        draw_small()

        pgl.glPushMatrix()
        pgl.glTranslatef(self.x, self.y, self.z)
        pgl.glRotatef(self.xRotation, 1, 0, 0)
        pgl.glRotatef(self.yRotation, 0, 1, 0)
        pgl.glRotatef(self.zRotation, 0, 0, 1)
        pgl.glScalef(self.zoom, self.zoom, self.zoom)

        if not transparant:
            pgl.glPolygonMode(pgl.GL_FRONT_AND_BACK, pgl.GL_FILL)
        else:
            pgl.glPolygonMode(pgl.GL_FRONT_AND_BACK, pgl.GL_LINE)

        draw_big()

        pgl.glPopMatrix()

只需围绕视图sapce中的y轴将视图旋转90度:

pgl.glMatrixMode(pgl.GL\u模型视图)
pgl.glLoadIdentity
pgl.glTranslatef(0,0,-100)
pgl.glRotatef(-90,0,1,0)#围绕视图空间y轴旋转90度
注意,左视图和右视图由
pgl.glRotatef(-90,0,1,0)
pgl.glRotatef(90,0,1,0)
生成

通过围绕视图sapce x轴旋转,分别通过
pgl.glRotatef(90,1,0,0)
实现上视图和下视图
pgl.glRotatef(-90,0,1,0)

只需围绕视图sapce中的y轴旋转视图90度即可:

pgl.glMatrixMode(pgl.GL\u模型视图)
pgl.glLoadIdentity
pgl.glTranslatef(0,0,-100)
pgl.glRotatef(-90,0,1,0)#围绕视图空间y轴旋转90度
注意,左视图和右视图由
pgl.glRotatef(-90,0,1,0)
pgl.glRotatef(90,0,1,0)
生成
顶视图和底视图通过围绕视图sapce x轴旋转,分别通过
pgl.glRotatef(90,1,0,0)
实现
pgl.glRotatef(-90,0,1,0)