class Sprite {
private:
BITMAP *Load;
GLuint GLImage;
int SpriteW;
int SpriteH;
public:
void Create(string Path) {
Load = NULL;
Load = load_bitmap(Path.c_str(),NULL);
if(Load == NULL) {
allegro_message("Error loading %s",Path.c_str());
} else {
SpriteW = Load->w;
SpriteH = Load->h;
GLImage = allegro_gl_make_texture_ex(AGL_TEXTURE_MASKED, Load, GL_RGBA);
glBindTexture(GL_TEXTURE_2D, GLImage);
destroy_bitmap(Load);
}
}
void Draw(int X, int Y, int ScreenW, int ScreenH) {
if(ScreenW == 0 || ScreenH == 0) {
allegro_message("Screen Width and/or Height invalid!");
} else {
float PosX = ((double)X/(ScreenW/2))-1;
float PosY = ((double)Y/(ScreenH/2))-1;
float Width = (double)SpriteW/(ScreenW/2);
float Height = (double)SpriteH/(ScreenH/2);
glColor4ub(255, 255, 255, 255);
glTexCoord2f(0,0); glVertex3f(PosX, -PosY, 0); // -0.96 ~ -0.95
glTexCoord2f(1,0); glVertex3f(PosX+Width, -PosY, 0); // 0.04
glTexCoord2f(1,1); glVertex3f(PosX+Width, (-PosY)-Height, 0);
glTexCoord2f(0,1); glVertex3f(PosX, (-PosY)-Height, 0);
}
}
};