public void draw2D(GeometryHandle geometry, TextureHandle texture, int primitive, int offset, int vertices, float x, float y, float z, float sx, float sy, float sz, AbstractColor color, float intensity) {
if(lx != x || ly != y || lz != z || lsx != sx || lsy != sy || lsz != sz) {
if(lsz != -1) GL11.glPopMatrix();
GL11.glPushMatrix();
if(x != 0 || y != 0 || z != 0) GL11.glTranslatef(x, y, z);
if(sx != 1 || sy != 1 || sz != 1) GL11.glScalef(sx, sy, sz);
lx = x; lsx = sx;
ly = y; lsy = sy;
lz = z; lsz = sz;
}
if(color != null) {
float r = color.red*intensity;
float g = color.green*intensity;
float b = color.blue*intensity;
float a = color.alpha;
if(lr != r || lg != g || lb != b || la != a) GL11.glColor4f(lr=r, lg=g, lb=b, la=a);
} else {
if(lr != lg || lr != lb || lr != intensity || la != 1) GL11.glColor4f(intensity, intensity, intensity, 1);
lr = lg = lb = intensity;
la = 1;
}
bindTexture(texture);
bindGeometry(geometry);
EGeometryFormatType format = geometry.getFormat();
if(format.getTexCoordPos() == -1) GL11.glDisableClientState(GL11.GL_TEXTURE_COORD_ARRAY);
specifyFormat(format);
GL11.glDrawArrays(primitive, offset * vertices, vertices);
if(format.getTexCoordPos() == -1) GL11.glEnableClientState(GL11.GL_TEXTURE_COORD_ARRAY);
}