* added HasOpenGLSupport to FormatDescriptor to check if the given format is supporte...
[glBitmap.git] / examples / SimpleLoadFromFile / SimpleLoadFromFile.lpr
index cb7cc15..64d2db7 100644 (file)
@@ -12,6 +12,7 @@ var
   oglWindow: TOpenGLWindow;
   running: Boolean = true;
   tex: TglBitmap2D;
+  data: TglBitmapData;
 
 function WindowProc(hWnd: HWND; Msg: UINT; wParam: WPARAM; lParam: LPARAM): LRESULT; stdcall;
 begin
@@ -39,10 +40,18 @@ end;
 begin
   oglWindow := CreateOpenGLWindow('SimpleLoadFromFile', 800, 600, @WindowProc);
   try
-    // load texture
-    tex := TglBitmap2D.Create;
-    tex.LoadFromFile(ExtractFilePath(ApplicationName) + '../textures/BMP_24_RGB8.bmp');
-    tex.GenTexture;
+    tex  := TglBitmap2D.Create;                             // create texture object
+    data := TglBitmapData.Create;                           // create texture data object
+    try
+      data.LoadFromFile(                                    // load texture data from file
+        ExtractFilePath(ApplicationName) +
+        '../textures/BMP_24_RGB8.bmp');
+      if not data.FormatDescriptor.HasOpenGLSupport then    // check if format is supported by OpenGL
+        data.ConvertTo(data.FormatDescriptor.OpenGLFormat); // if not then convert
+      tex.UploadData(data);                                 // upload data to video card
+    finally
+      FreeAndNil(data);                                     // after upload is done, the data object could be freed to save memory
+    end;
 
     while running and ProgressMesages do begin
       RenderLoop;