// When the program is created procedure TfmMain.FormCreate(Sender: TObject); var DC:HDC; RC:HGLRC; i:integer; tmpJpg : TJPEGImage; begin // Load the jpg into a bitmap tmpJpg := TJPEGImage.Create; try tmpJpg.LoadFromFile('./spark0.jpg'); BackBmp := tbitmap.Create; BackBmp.Assign(tmpJpg); finally tmpJpg.Free; end; // Make the OpenGL bit DC:=GetDC(Panel1.Handle); SetupPixelFormat(DC); RC:=wglCreateContext(DC); //makes OpenGL window out of DC wglMakeCurrent(DC, RC); //makes OpenGL window active GLInit; //initialize OpenGL end; // Start OpenGL stuff procedure GLInit; begin glMatrixMode(GL_PROJECTION); gluOrtho2D(0,512,0,512); glMatrixMode(GL_MODELVIEW); glEnable(GL_DEPTH_TEST); glGenTextures(1,@BackTex); // Bind the texture glBindTexture(GL_TEXTURE_2D, BackTex); glTexImage2D(GL_TEXTURE_2D,0,3,512,512,0,GL_RGB,GL_BITMAP,BackBmp); end; // Draw the stuff procedure TfmMain.Draw2D; const W=512; H= 512; begin glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT); glLoadIdentity; glBindTexture(GL_TEXTURE_2D, BackTex); glBegin(GL_POLYGON); glTexCoord2f(0,0); glVertex2f(0, 0); glTexCoord2f(0,H); glVertex2f(0, H); glTexCoord2f(W,H); glVertex2f(W, H); glTexCoord2f(W,0); glVertex2f(W, 0); glEnd(); SwapBuffers(wglGetCurrentDC); end;