예제 #1
0
    def initializeGL(self):
        QGLWidget.initializeGL(self)
        glMatrixMode(GL_PROJECTION)
        glLoadIdentity()
        glViewport(0, 0, self.width(), self.height())
        #procedure gluPerspective(fovy, aspect, zNear, zFar : glDouble);
        gluPerspective(70, 1.0 * self.width() / self.height(), 0.1, 1000.0)
        gluLookAt(100, 100, 100,
                  0, 0, 0,
                  0, 1, 0)

        glMatrixMode(GL_MODELVIEW)

        # glShadeModel(GL_SMOOTH)
        # glClearColor(0.0, 0.0, 0.0, 0.0)
        # glClearDepth(1.0)
        glEnable(GL_CULL_FACE)
        glMaterialfv(GL_FRONT, GL_DIFFUSE, GLfloat_4(1., 1., 0., 0.))
        glEnable(GL_DEPTH_TEST)
        glShadeModel(GL_SMOOTH)
        glDepthFunc(GL_LEQUAL)
        # glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST)
        glEnable(GL_COLOR_MATERIAL)
        glEnable(GL_LIGHTING)
        glEnable(GL_LIGHT0)
        glLight(GL_LIGHT0, GL_POSITION, (0, 1, 1, 0))

        #glLightfv(GL_LIGHT0, GL_AMBIENT, GLfloat_4(0.0, 1.0, 0.0, 1.0))
        #glLightfv(GL_LIGHT0, GL_DIFFUSE, GLfloat_4(1.0, 1.0, 1.0, 1.0))
        #glLightfv(GL_LIGHT0, GL_SPECULAR, GLfloat_4(1.0, 1.0, 1.0, 1.0))
        #glLightfv(GL_LIGHT0, GL_POSITION, GLfloat_4(1.0, 1.0, 1.0, 0.0));
        #glLightModelfv(GL_LIGHT_MODEL_AMBIENT, GLfloat_4(0.2, 0.2, 0.2, 1.0))

        glEnable(GL_LIGHTING)
        glEnable(GL_LIGHT0)

        for s in self.stl:
            s._gen_list()