Code: Alles auswählen
import pygame
#from sys import exit
import sys
from OpenGL.GL import *
from OpenGL.GLU import *
screen = (800,600)
pygame.init()
surface = pygame.display.set_mode(screen, pygame.OPENGL|pygame.DOUBLEBUF, 16)
pygame.display.set_caption("Hallo Welt!")
def reshape((width,height)):
glViewport(0, 0, width, height) # Bereich in dem gezeichnet wird
glMatrixMode(GL_PROJECTION) #deprecated in OpenGL 3.0
glLoadIdentity() # deprecated
gluPerspective(60, 1.0*width/height, 0.1, 1000.0) # deprecated
glMatrixMode(GL_MODELVIEW) # deprecated
def init():
glEnable(GL_DEPTH_TEST) #enables depth testing
glClearColor(1.0, 1.0, 1.0, 1.0) # Hintergrundfarbe (r,g,,b,alpha)
reshape(screen)
global quad_angle
quad_angle=0
def get_event():
for event in pygame.event.get():
if event.type == pygame.QUIT:
exit()
def draw():
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT) #clears the screen
glLoadIdentity() #deprecated / veraltet in OpenGL 3.0
# reset the model matrix by loading the identity matrix
gluLookAt(0, 0, 6, 0, 0, -100, 0, 1 ,0) # Ausrichtung der Kamera # deprecated
# Koordinaten der Kamera(x,y,z); wohin wird geblickt? (x,y,z), wo ist oben? (x,y,z)
# Move left 1.5 units and into the screen 6.0 units
glTranslatef(-1.5, 0.0, -6.0)
# Rotate the quad on the X-axis
glRotatef(quad_angle, 1.0, 0.0, 0.0) # (angle in degrees, x, y, z)
# Drawing in IMMEDIATE MODE => deprecated in OpenGL 3.0
glBegin(GL_QUADS) # Viereck
glColor(0, 0, 1.0) # Farbe (r,g,b) each with 0.0 = none and 1.0 = full
glVertex3f(1, -1, -1) # oben links
glVertex3f(1, -1, 1) # oben rechts
glVertex3f(-1, -1, 1) # unten rechts
glVertex3f(-1, -1, -1) # unten links
glVertex3f(1, 1, -1) #5
glVertex3f(-1, 1, -1) # 8
glVertex3f(-1, 1, 1) # 7
glVertex3f(1, 1, 1) # 6
glVertex3f(1, -1, -1) # 1
glVertex3f(1, 1, -1) # 5
glVertex3f(1, 1, 1) # 6
glVertex3f(1, -1, 1) # 2
# vorne
#glVertex3f(1, -1, -1) # 2
#glVertex3f(1, 1, 1) # 6
#glVertex3f(-1, 1, 1) # 7
# glVertex3f(-1, -1, 1) # 3
# glVertex3f(-1, -1, 1) #3
# glVertex3f(-1, 1, 1) # 7
# glVertex3f(-1, 1, -1) # 8
# glVertex3f(-1, -1, -1) #4
glEnd()
# VERTEX ARRAYS
myarray=[[-2,-2,0,2,-2,0,0,2,0]] # [] for each figure
mycolors=[[0.5,1,0.2,1,1,0,0,1,1]] # [] for each figure
glEnableClientState(GL_COLOR_ARRAY) # enable Vertex Array
glColorPointer(3, GL_FLOAT, 0, mycolors[0])
glEnableClientState(GL_VERTEX_ARRAY) # enable Vertex Array
glVertexPointer(3, GL_FLOAT, 0, myarray[0]) # tell OpenGL where the vertices are
glDrawArrays(GL_TRIANGLES, 0, 3) # draw(what?, starting index, number of elements to draw)
glDisableClientState(GL_VERTEX_ARRAY) # disable the Vertex Array
glDisableClientState(GL_COLOR_ARRAY) # disable the Vertex Array
# VERTEX BUFFER OBJECTS
vbo_vertex=[[0,0,-2]]
#m_vertexBuffer=GLuint(0) # init the Buffer in Python!
m_vertexBuffer=glGenBuffers(1)#m_vertexBuffer) # generate a buffer for the vertices
glBindBuffer(GL_ARRAY_BUFFER, m_vertexBuffer) #bind the vertex buffer
glBufferData(GL_ARRAY_BUFFER, sys.getsizeof(vbo_vertex), vbo_vertex[0], GL_STATIC_DRAW)
glBindBuffer(GL_ARRAY_BUFFER, m_vertexBuffer) #bind the vertex buffer
glVertexPointer(3, GL_FLOAT, 0, BUFFER_OFFSET(0))
glEnableClientState(GL_VERTEX_ARRAY) # enable Vertex Array
glDrawArrays(GL_POINTS, 0, 1) # draw a single point
glDisableClientState(GL_VERTEX_ARRAY) # disable the Vertex Array
# funktioniert noch nicht
pygame.display.flip()
def main():
init()
maxfps = 100
clock = pygame.time.Clock()
while True:
clock.tick(maxfps)
draw()
get_event()
global quad_angle
quad_angle -= 0.15
if __name__ == "__main__":
main()
Die Fehlermeldung ist: NotImplementedError: Haven't implemented type-inference for lists yet # aus der Zeile glBufferData