import os, sys import traceback from math import * with open(os.devnull, "w") as f: oldstdout=sys.stdout; sys.stdout=f; import pygame; sys.stdout=oldstdout from pygame.locals import * from OpenGL.GL import * from OpenGL.GLU import * if sys.platform in ("win32","win64"): os.environ["SDL_VIDEO_CENTERED"]="1" pygame.display.init() pygame.font.init() WINDOW_RES = [1024,768] MSAA = 16 icon=pygame.Surface((32,32)); icon.set_colorkey((0,0,0)); pygame.display.set_icon(icon) pygame.display.set_caption("[Program] - [Author] - [Version] - [Date]") if MSAA: pygame.display.gl_set_attribute(GL_MULTISAMPLEBUFFERS,1 ) pygame.display.gl_set_attribute(GL_MULTISAMPLESAMPLES,MSAA) pygame.display.set_mode(WINDOW_RES,OPENGL|DOUBLEBUF) glEnable(GL_BLEND) glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA) #glEnable(GL_TEXTURE_2D) glTexEnvi(GL_TEXTURE_ENV,GL_TEXTURE_ENV_MODE,GL_MODULATE) glTexEnvi(GL_POINT_SPRITE,GL_COORD_REPLACE,GL_TRUE) glHint(GL_PERSPECTIVE_CORRECTION_HINT,GL_NICEST) glEnable(GL_DEPTH_TEST) camera_rot = [ -70.0, 22.5 ] camera_radius = 3.0 camera_center = [ 0.0, 0.0, 0.0 ] def get_input(): global camera_rot, camera_radius keys_pressed = pygame.key.get_pressed() mouse_buttons = pygame.mouse.get_pressed() mouse_position = pygame.mouse.get_pos() mouse_rel = pygame.mouse.get_rel() for event in pygame.event.get(): if event.type == QUIT: return False elif event.type == KEYDOWN: if event.key == K_ESCAPE: return False elif event.type == MOUSEBUTTONDOWN: if event.button==4: camera_radius*=0.9 elif event.button==5: camera_radius/=0.9 if mouse_buttons[0]: camera_rot[0] -= mouse_rel[0] camera_rot[1] += mouse_rel[1] return True def draw(): glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT) glViewport(0,0,WINDOW_RES[0],WINDOW_RES[1]) glMatrixMode(GL_PROJECTION) glLoadIdentity() gluPerspective( 45.0, float(WINDOW_RES[0])/float(WINDOW_RES[1]), 0.1,100.0 ) glMatrixMode(GL_MODELVIEW) glLoadIdentity() camera_pos = [ camera_center[0] + camera_radius*cos(radians(camera_rot[0]))*cos(radians(camera_rot[1])), camera_center[1] + camera_radius*sin(radians(camera_rot[0]))*cos(radians(camera_rot[1])), camera_center[2] + camera_radius *sin(radians(camera_rot[1])) ] gluLookAt( camera_pos[0], camera_pos[1], camera_pos[2], camera_center[0], camera_center[1], camera_center[2], 0.0, 0.0, 1.0 ) glBegin(GL_LINES) glColor3f(1,0,0); glVertex3f(0,0,0); glVertex3f(1,0,0) glColor3f(0,1,0); glVertex3f(0,0,0); glVertex3f(0,1,0) glColor3f(0,0,1); glVertex3f(0,0,0); glVertex3f(0,0,1) glColor3f(1,1,1) glEnd() glBegin(GL_TRIANGLES) glVertex3f(0.0,0.0,0.0) glVertex3f(0.5,0.0,0.0) glVertex3f(0.0,0.5,0.0) glEnd() pygame.display.flip() def main(): clock = pygame.time.Clock() while True: if not get_input(): break draw() clock.tick(60) pygame.quit() if __name__ == "__main__": try: main() except: traceback.print_exc() pygame.quit() input()