Exemplo n.º 1
0
    bottom = -top
    proj_matrix = clip_matrix(left, right, bottom, top, near, far, perspective=True)
    proj_loc = glGetUniformLocation(shader.program, "projection_matrix")
    glUniformMatrix4fv(proj_loc, 1, False, numpy.array(proj_matrix, 'f'))

    mv_matrix = camera.getMatrix()
    mv_loc = glGetUniformLocation(shader.program, "modelview_matrix")
    glUniformMatrix4fv(mv_loc, 1, True, numpy.array(mv_matrix, 'f'))

    #glEnable(GL_LIGHTING)
    #glEnable(GL_LIGHT0)
    #glLightfv(GL_LIGHT0, GL_POSITION, [0,100, 100])
    #glMaterialfv(GL_FRONT, GL_DIFFUSE, [1, 0, 1, 1.0]);

    vz -= 9.8*dt
    camera.move(0, 0, vz*dt)

    (dx, dy, dz) = physics.collide(camera.pos, 0.4, model.collideables())
    if (dz > 0):
        vz = 0
    camera.move(dx, dy, dz)

    light_dir_camera_space = mv_matrix.dot(light_direction)
    ld_loc = glGetUniformLocation(shader.program, "dir_to_light")
    glUniform3fv(ld_loc, 1, numpy.array(light_dir_camera_space[:3]))

    for renderable in model.renderables():
        renderable.draw(shader)
    
    pygame.display.flip()