def string(font, string, x, y, z, rot, sclx, scly): opengles.glNormalPointer(GL_BYTE, 0, RECT_NORMALS) Utility.texture_min_mag() opengles.glEnableClientState(GL_TEXTURE_COORD_ARRAY) opengles.glBindTexture(GL_TEXTURE_2D,font.tex) opengles.glEnable(GL_TEXTURE_2D) opengles.glDisable(GL_DEPTH_TEST) opengles.glDisable(GL_CULL_FACE) opengles.glEnable(GL_BLEND) opengles.glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA) mtrx =(c_float * 16)() opengles.glGetFloatv(GL_MODELVIEW_MATRIX,ctypes.byref(mtrx)) Utility.translatef(x, y, z) Utility.rotatef(rot, 0, 0, 1) Utility.scalef(sclx, scly, 1) for c in range(0,len(string)): v = ord(string[c])-32 w, h, texc, verts = font.chr[v] if v > 0: opengles.glVertexPointer(3, GL_FLOAT, 0,verts) opengles.glTexCoordPointer(2, GL_FLOAT,0,texc) opengles.glDrawElements( GL_TRIANGLES, 6, GL_UNSIGNED_BYTE, RECT_TRIANGLES) Utility.translatef(w, 0, 0) opengles.glLoadMatrixf(mtrx) opengles.glDisable(GL_TEXTURE_2D) opengles.glDisable(GL_BLEND) opengles.glEnable(GL_DEPTH_TEST) opengles.glEnable(GL_CULL_FACE)
def draw(self,tex, x, y, z): mtrx = (ctypes.c_float*16)() opengles.glGetFloatv(GL_MODELVIEW_MATRIX,ctypes.byref(mtrx)) Utility.translatef(-x, -y, -z) Utility.texture_min_mag(); opengles.glVertexPointer(3, GL_FLOAT, 0, self.vertices) opengles.glNormalPointer(GL_FLOAT, 0, self.normals) opengles.glEnableClientState(GL_TEXTURE_COORD_ARRAY) opengles.glDisable(GL_LIGHTING) opengles.glEnable(GL_TEXTURE_2D) if self.maptype=="FACES": opengles.glTexCoordPointer(2, GL_FLOAT, 0, self.tex_faces) opengles.glBindTexture(GL_TEXTURE_2D,tex[0].tex) opengles.glDrawElements(GL_TRIANGLES, 6, GL_UNSIGNED_SHORT , self.indtop) Utility.texture_min_mag() opengles.glBindTexture(GL_TEXTURE_2D,tex[1].tex) opengles.glDrawElements(GL_TRIANGLES, 6, GL_UNSIGNED_SHORT , self.indleft) Utility.texture_min_mag() opengles.glBindTexture(GL_TEXTURE_2D,tex[2].tex) opengles.glDrawElements(GL_TRIANGLES, 6, GL_UNSIGNED_SHORT , self.indfront) Utility.texture_min_mag() opengles.glBindTexture(GL_TEXTURE_2D,tex[3].tex) opengles.glDrawElements(GL_TRIANGLES, 6, GL_UNSIGNED_SHORT , self.indright) Utility.texture_min_mag() opengles.glBindTexture(GL_TEXTURE_2D,tex[4].tex) opengles.glDrawElements(GL_TRIANGLES, 6, GL_UNSIGNED_SHORT , self.indback) if tex[5] >0: Utility.texture_min_mag() opengles.glBindTexture(GL_TEXTURE_2D,tex[5].tex) opengles.glDrawElements(GL_TRIANGLES, 6, GL_UNSIGNED_SHORT , self.indbot) else: #load view matrix opengles.glTexCoordPointer(2, GL_FLOAT, 0, self.tex_coords) opengles.glBindTexture(GL_TEXTURE_2D,tex.tex) opengles.glDrawElements(GL_TRIANGLES, 36, GL_UNSIGNED_SHORT , self.indices) opengles.glEnable(GL_LIGHTING) opengles.glDisable(GL_TEXTURE_2D) #restore to previous matrix opengles.glLoadMatrixf(mtrx)