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 transform(self): Utility.translatef(self.x - self.cx, self.y - self.cy, self.z - self.cz) # TODO: why the reverse order? Utility.rotatef(self.rotz, 0, 0, 1) Utility.rotatef(self.roty, 0, 1, 0) Utility.rotatef(self.rotx, 1, 0, 0) Utility.scalef(self.sx, self.sy, self.sz) Utility.translatef(self.cx, self.cy, self.cz)
def _draw(verts, tex, x, y, w, h, r, z): opengles.glNormalPointer(GL_BYTE, 0, RECT_NORMALS); opengles.glVertexPointer(3, GL_BYTE, 0, verts); Utility.load_identity() Utility.translatef(x, y, z) Utility.scalef(w, h, 1) if r: Utility.rotatef(r, 0, 0, 1) with Texture.Loader(tex,RECT_TEX_COORDS,GL_BYTE): opengles.glDrawElements(GL_TRIANGLES, 6, GL_UNSIGNED_BYTE, RECT_TRIANGLES)
def scale(self, sx, sy, sz): # TODO: get rid of this. Utility.scalef(sx, sy, sz)