#include <gl/glew.h>
#include <gl/glut.h>
typedef unsigned int Uint32;
static const Uint32 SCREEN_WIDTH = 800;
static const Uint32 SCREEN_HEIGHT = 600;
static const Uint32 MAX_UINT32 = 0xFFFFFFFF;
int HALF_W = SCREEN_WIDTH>>1;
int HALF_H = SCREEN_HEIGHT>>1;
GLuint txt;
unsigned char* bitmapData;
void Render()
{
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
glBegin(GL_QUADS);
glTexCoord2i(0,0);glVertex2i(0,0);
glTexCoord2i(SCREEN_WIDTH,0);glVertex2i(SCREEN_WIDTH,0);
glTexCoord2i(SCREEN_WIDTH,SCREEN_HEIGHT);glVertex2i(SCREEN_WIDTH,SCREEN_HEIGHT);
glTexCoord2i(0,SCREEN_HEIGHT);glVertex2i(0,SCREEN_HEIGHT);
glEnd();
glFinish();
glutSwapBuffers();
}
void CreateTexture(GLuint* texID){
Uint32 lsize = SCREEN_WIDTH*SCREEN_HEIGHT*4 ;
GLuint* ldata = new GLuint[lsize ];
memset(ldata,0,lsize );
for( Uint32 i=0; i<lsize; ++i ){
if( (i+1)%4 ){
ldata[i]=0; //black
}else{
ldata[i]=MAX_UINT32; //alpha
}
}
//white pixel in center of screen
ldata[(SCREEN_WIDTH*HALF_H+ HALF_W)*4] = MAX_UINT32;
ldata[(SCREEN_WIDTH*HALF_H+ HALF_W)*4+1] = MAX_UINT32;
ldata[(SCREEN_WIDTH*HALF_H+ HALF_W)*4+2] = MAX_UINT32;
glActiveTexture( GL_TEXTURE0 );
glGenTextures( 1, texID );
glBindTexture( GL_TEXTURE_RECTANGLE, *texID );
glTexParameterf(GL_TEXTURE_RECTANGLE, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
glTexImage2D( GL_TEXTURE_RECTANGLE, 0, GL_RGBA, SCREEN_WIDTH, SCREEN_HEIGHT, 0, GL_RGBA, GL_UNSIGNED_INT, ldata );
delete[] ldata;
}
int main(int argc, char** argv)
{
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_RGB|GLUT_DOUBLE);
glutInitWindowSize(SCREEN_WIDTH,SCREEN_HEIGHT);
glutCreateWindow("SIMPLE DISPLAY");
glewInit();
glutDisplayFunc(Render);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluOrtho2D(0,SCREEN_WIDTH, 0, SCREEN_HEIGHT);
glEnable(GL_TEXTURE_RECTANGLE);
CreateTexture(&txt);
glutMainLoop();
return 0;
}