rendered paste body // 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;