import pygame from pygame.locals import * import glfw import math import time from OpenGL.GL import * from OpenGL.GLU import * from OpenGL.arrays import vbo import numpy as np from ctypes import * from camera import * from obj_loader import * from shaders import * def main(): pygame.init() display = (800,600) pygame.display.set_mode(display, OPENGL|DOUBLEBUF) i=0 running=True cam=Camera(0,0,0) vsh=open("shader.vsh") fsh=open("shader.fsh") shader=Shader(vsh,fsh) rel=np.array([0,0]) dpi=200.0 rel2=np.array([0,0]) pygame.mouse.set_visible(False) pygame.event.set_grab(True) glMatrixMode(GL_PROJECTION) gluPerspective(60,800.0/600.0,0.1,1000.0) glMatrixMode(GL_MODELVIEW) glEnable(GL_DEPTH_TEST) glEnable(GL_LIGHTING) glEnable(GL_LIGHT0) glEnable(GL_COLOR_MATERIAL) glEnableClientState(GL_VERTEX_ARRAY) glEnableClientState(GL_NORMAL_ARRAY) glLightfv(GL_LIGHT0,GL_DIFFUSE,(1.0,1.0,1.0,1.0)) glLightfv(GL_LIGHT0,GL_AMBIENT,(0.2,0.2,0.2,1.0)) obj=Object("cube.obj",(0.0,0.0,-2.0),True ) while running: ticks=pygame.time.get_ticks() pressed=pygame.key.get_pressed() for event in pygame.event.get(): if event.type == pygame.QUIT: running=False glClearColor(0.0,0.0,0.0,1.0) glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT) glPushMatrix() shader.use() cam.rotate(rel[0]/dpi,rel[1]/dpi) cam.look() obj.draw() glLightfv(GL_LIGHT0,GL_POSITION,cam.getPos()) glPopMatrix() pygame.display.flip() rel=np.array(pygame.mouse.get_rel()) pygame.mouse.set_pos(display[0]/2, display[1]/2) rel2=np.array(pygame.mouse.get_rel()) ticks=pygame.time.get_ticks()-ticks if ticks>0: fps=math.floor(1000000.0/(ticks*1000.0)) else: fps=1000000.0 print(fps) dt=ticks/1000.0 mx,my=math.sin(cam.roll),math.cos(cam.roll) if pressed[pygame.K_d]: cam.move(-mx*dt,0,my*dt) if pressed[pygame.K_a]: cam.move(mx*dt,0,-my*dt) if pressed[pygame.K_w]: cam.move(my*dt,0,mx*dt) if pressed[pygame.K_s]: cam.move(-my*dt,0,-mx*dt) if pressed[pygame.K_SPACE]: cam.move(0,dt,0) if pressed[pygame.K_LCTRL]: cam.move(0,-dt,0) if pressed[pygame.K_ESCAPE]: running=False pygame.quit() quit() main()