nachdem ich mich gestern erstmals mit OpenGL beschäftigt habe, hab ich heute die ersten zwei Kapitel von diesem Tutorial durchgearbeitet. Und beim Versuch, mit Python+PyOpenGL ein Dreieck in die Gegend zu malen, scheitere ich schon Hier mal mein Quellcode:
Code: Alles auswählen
#!/usr/bin/env python3
# -*- coding:utf-8 -*-
import sys
import pygame
from OpenGL.GL import *
from OpenGL.GLU import *
from OpenGL.GLUT import *
class Szene:
def __init__(self):
self.laeuft = True
self.init_fenster()
def init_fenster(self):
pygame.init()
self.fenster = pygame.display.set_mode((800, 450), pygame.OPENGL)
glutInit() # GLUT initen
glShadeModel(GL_SMOOTH) # Shader an
glClearColor(0.9,0.9,0.9,0.0) # Hintergrundfarbe
# Tiefentests
glClearDepth(1)
glEnable(GL_DEPTH_TEST)
glDepthFunc(GL_LEQUAL)
def verarbeite_event(self, event):
# Beenden
if event.type == pygame.QUIT or (event.type == pygame.KEYDOWN and event.key == pygame.K_ESCAPE):
self.laeuft = False
def aktualisiere(self):
# Bildschirm grau ausmalen
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT)
# Projektionsmatrix
glMatrixMode(GL_PROJECTION)
glLoadIdentity()
gluPerspective(45.0, 16/9, 1, 100)
gluLookAt(0,1,0, 0,1,5, 0,1,0)
# Modellmatrix
glMatrixMode(GL_MODELVIEW)
glLoadIdentity()
# Dreieck malen
glColor3f(1, 0 ,0)
glTranslatef(-1.5, 0, -6)
glBegin(GL_TRIANGLES)
glVertex3f(0,1,0)
glVertex3f(-1,0,0)
glVertex3f(1,0,0)
glEnd()
def hauptschleife(self):
while self.laeuft:
# Eingabe
for event in pygame.event.get():
self.verarbeite_event(event)
# Aktualisieren
self.aktualisiere()
# Flush & Flip (Neuzeichnen)
glFlush()
pygame.display.flip()
sys.exit()
if __name__ == '__main__':
szene = Szene()
szene.hauptschleife()
Danke und Lg Y.