anbei der Quellcode...komme einfach nicht weiter, was so ziemlich demotivierend ist. Die Anzeige der View sind 2 Dreiecke eins schwarz das andere bunt, weiss jemand von euch wo der Fehler liegt? Ach so, bitte keine Tipps zu pygame oder pyglet usw., das Projekt soll rein in Opengl sein. Ich wäre sehr dankbar wenn mir hier jemand weiterhelfen könnte.
Code: Alles auswählen
from OpenGL.GL import *
from OpenGL.GLU import *
from OpenGL.GLUT import *
import sys,os
from math import sqrt,sin,cos
import Image
cube_faces = ["desert_back.jpg","desert_front.jpg","desert_left.jpg","desert_right.jpg","desert_top.jpg","desert_top.jpg"]
cube = (GLenum * 6)(GL_TEXTURE_CUBE_MAP_POSITIVE_X,
GL_TEXTURE_CUBE_MAP_NEGATIVE_X,
GL_TEXTURE_CUBE_MAP_NEGATIVE_Y,
GL_TEXTURE_CUBE_MAP_POSITIVE_Y,
GL_TEXTURE_CUBE_MAP_POSITIVE_Z,
GL_TEXTURE_CUBE_MAP_NEGATIVE_Z)
PATH = "/Users/xxx/Documents/Skybox/"
def draw_skybox():
t = 1.0
fext = 15.0
glBegin(GL_QUADS)
# Negative X
glTexCoord3f(-t,-t,t)
glVertex3f(-fext,-fext,fext)
glTexCoord3f(-t,-t,-t)
glVertex3f(-fext,-fext,-fext)
glTexCoord3f(-t,t,-t)
glVertex3f(-fext,fext,-fext)
glTexCoord3f(-t,t,t)
glVertex3f(-fext,fext,fext)
# Positive X
glTexCoord3f(t,-t,-t)
glVertex3f(fext,-fext,-fext)
glTexCoord3f(t,t,t)
glVertex3f(fext,fext,fext)
glTexCoord3f(-t,t,-t)
glVertex3f(-fext,fext,-fext)
glTexCoord3f(t,t,-t)
glVertex3f(fext,fext,-fext)
# Positive Z
glTexCoord3f(t,-t,t)
glVertex3f(fext,-fext,fext)
glTexCoord3f(-t,-t,t)
glVertex3f(-fext,-fext,fext)
glTexCoord3f(-t,t,t)
glVertex3f(-fext,fext,fext)
glTexCoord3f(t,t,t)
glVertex3f(fext,fext,fext)
# Positive Y
glTexCoord3f(-t,t,t)
glVertex3f(-fext,fext,fext)
glTexCoord3f(-t,t,-t)
glVertex3f(-fext,fext,-fext)
glTexCoord3f(t,t,-t)
glVertex3f(fext,fext,-fext)
glTexCoord3f(t,t,t)
glVertex3f(fext,fext,-fext)
# Negative Y
glTexCoord3f(-t,-t,-t)
glVertex3f(-fext,-fext,-fext)
glTexCoord3f(-t,-t,t)
glVertex3f(-fext,-fext,fext)
glTexCoord3f(t,-t,t)
glVertex3f(fext,-fext,fext)
glTexCoord3f(t,-t,-t)
glVertex3f(fext,-fext,-fext)
glEnd()
def draw():
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT)
glLoadIdentity()
glPushMatrix()
glDisable(GL_TEXTURE_GEN_S)
glDisable(GL_TEXTURE_GEN_T)
glDisable(GL_TEXTURE_GEN_R)
draw_skybox()
glEnable(GL_TEXTURE_GEN_S)
glEnable(GL_TEXTURE_GEN_T)
glEnable(GL_TEXTURE_GEN_R)
glPushMatrix()
glTranslate(0.,0.,-3.)
glMatrixMode(GL_TEXTURE)
glMatrixMode(GL_MODELVIEW)
glPopMatrix()
glPopMatrix()
glutSwapBuffers()
def load_image(image):
img = Image.open(PATH+image)
w = img.size[0]
h = img.size[1]
d = img.tostring("raw","RGBX",0,-1)
return d,w,h
def initGL(w,h):
glCullFace(GL_BACK)
glFrontFace(GL_CCW)
glEnable(GL_CULL_FACE)
glEnable(GL_DEPTH_TEST)
glTexParameteri(GL_TEXTURE_CUBE_MAP,GL_TEXTURE_MAG_FILTER,GL_LINEAR)
glTexParameteri(GL_TEXTURE_CUBE_MAP,GL_TEXTURE_MIN_FILTER,GL_LINEAR_MIPMAP_LINEAR)
glTexParameteri(GL_TEXTURE_CUBE_MAP,GL_TEXTURE_WRAP_S,GL_CLAMP_TO_EDGE)
glTexParameteri(GL_TEXTURE_CUBE_MAP,GL_TEXTURE_WRAP_T,GL_CLAMP_TO_EDGE)
glTexParameteri(GL_TEXTURE_CUBE_MAP,GL_TEXTURE_WRAP_R,GL_CLAMP_TO_EDGE)
for i in range(6):
glTexParameteri(GL_TEXTURE_CUBE_MAP,GL_GENERATE_MIPMAP,GL_TRUE)
data,width,height = load_image(cube_faces[i])
glTexImage2D(cube[i],0,GL_RGB,width,height,0,GL_RGB,GL_UNSIGNED_BYTE,data)
glTexGeni(GL_S,GL_TEXTURE_GEN_MODE,GL_REFLECTION_MAP)
glTexGeni(GL_T,GL_TEXTURE_GEN_MODE,GL_REFLECTION_MAP)
glTexGeni(GL_R,GL_TEXTURE_GEN_MODE,GL_REFLECTION_MAP)
glEnable(GL_TEXTURE_CUBE_MAP)
glTexEnvi(GL_TEXTURE_ENV,GL_TEXTURE_ENV_MODE,GL_DECAL)
def reshape(w,h):
if h == 0:
h = 1
glViewport(0,0,w,h)
aspect = float(w) / float(h)
glMatrixMode(GL_PROJECTION)
glLoadIdentity()
gluPerspective(35.0,aspect,1.0,2000.0)
glMatrixMode(GL_MODELVIEW)
glLoadIdentity()
def main():
glutInit(sys.argv)
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH)
glutInitWindowSize(800,600)
glutCreateWindow("Skybox")
glutDisplayFunc(draw)
glutReshapeFunc(reshape)
initGL(800,600)
glutMainLoop()
if __name__=='__main__':
main()