5 from OpenGL.GL import *
10 def __init__(self, path):
14 self.isInitialized=False
16 def onInitialize(self):
17 self.isInitialized=False
19 def createTexture(self):
20 self.id=glGenTextures(1)
22 print("fail to glGenTextures")
24 print("createTexture: %d" % self.id)
26 channels=len(self.image.getbands())
28 glBindTexture(GL_TEXTURE_2D, self.id)
29 glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP)
30 glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP)
31 glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR)
32 glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR)
35 glPixelStorei(GL_UNPACK_ALIGNMENT, 4)
36 glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, w, h,
37 0, GL_RGBA, GL_UNSIGNED_BYTE, self.image.tostring())
40 glPixelStorei(GL_UNPACK_ALIGNMENT, 1)
41 glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, w, h,
42 0, GL_RGB, GL_UNSIGNED_BYTE, self.image.tostring())
45 if not self.isInitialized:
49 self.image=Image.open(self.path)
51 print("load image:", self.path)
53 print("failt to load image:", self.path)
58 except Exception as e:
62 self.isInitialized=True
64 glEnable(GL_TEXTURE_2D)
65 glBindTexture(GL_TEXTURE_2D, self.id)
68 glDisable(GL_TEXTURE_2D)