Example #1
0
    def __init__(self):
        super(Application, self).__init__()
        self.lastFrameTime = time.time()
        self.runTime = 0
        self.angle = 0
        self.camera = Camera.Camera()
        self.mouse_move_valid = False
        self.mouse_last_x = None
        self.mouse_last_y = None
        self.scene = SolarSystemScene.SolarSystemScene()

        # Culling type. GL_BACK is the default.
        # glCullFace(GL_BACK)
        # glCullFace(GL_FRONT_AND_BACK)
        glEnable(GL_CULL_FACE)
        glEnable(GL_DEPTH_TEST)
        # glEnable(GL_BLEND)
        # glBlendFunc(GL_SRC_ALPHA_SATURATE, GL_ONE)
        # glEnable(GL_POLYGON_SMOOTH)
        # glHint (GL_LINE_SMOOTH_HINT, GL_DONT_CARE)
        glLineWidth (1.5)
        # glDisable(GL_CULL_FACE)
        glMatrixMode(GL_MODELVIEW)

        glEnable(GL_LIGHTING)
        glShadeModel(GL_SMOOTH)



        # Open GL only supports up to 8 lights.
        num_lights = len(self.scene.lights)

        for light_num in range(min(num_lights, 8)):
            print("Setting light " + str(light_num))
            glEnable(get_light_enum(light_num))

        if(num_lights > 8):
            print("Warning: More than 8 lights detected in scene.")

        self.lastFrameTime = time.time()

        # Drawing initializations.
        red = (0.8, 0.1, 0.0, 1.0)

        self.triangle1 = glGenLists(1)
        glNewList(self.triangle1, GL_COMPILE)
        glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, red)
        ds.TriangleEquil()
        glEndList()

        self.cube1 = glGenLists(1)
        glNewList(self.cube1, GL_COMPILE)
        glPolygonMode(GL_FRONT, GL_FILL)
        ds.DrawCube()
        glEndList()

        self.skybox = glGenLists(1)
        glNewList(self.skybox, GL_COMPILE)
        glPolygonMode(GL_FRONT, GL_FILL)
        ds.DrawSkybox()
        glEndList()

        #Skybox texture
        if(self.scene.skybox_tex != None):
            self.skybox_name = GLuint()

            glPixelStorei(GL_UNPACK_ALIGNMENT, 1)

            glGenTextures(1, self.skybox_name)
            glBindTexture(GL_TEXTURE_2D, self.skybox_name)

            glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT)
            glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT)
            glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST)
            glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST)
            glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, self.scene.skybox_tex_dim,
                      self.scene.skybox_tex_dim, 0, GL_RGBA, GL_UNSIGNED_BYTE, self.scene.skybox_tex)