OpenGL weigert sich, ein Dreieck zu zeichnen.

Hier werden alle anderen GUI-Toolkits sowie Spezial-Toolkits wie Spiele-Engines behandelt.
Antworten
Üpsilon
User
Beiträge: 222
Registriert: Samstag 15. September 2012, 19:23

Hallo ihr Lieben,
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()
Und wenn ich das starte, dann ... öffnet sich ein Fenster mit grauem Hintergrund und ohne jegliches Dreieck. Keine Fehlermeldung. Was mache ich falsch?
Danke und Lg Y.
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Das Dreieck wird schon gezeichnet, es befindet sich nur hinter dir ;-)
Das Leben ist wie ein Tennisball.
Üpsilon
User
Beiträge: 222
Registriert: Samstag 15. September 2012, 19:23

Upps. :D Daran hab ich gar nicht gedacht... Danke!
PS: Die angebotene Summe ist beachtlich.
Antworten