Unit1.cpp 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. //---------------------------------------------------------------------------
  2. #include <vcl.h>
  3. #include <System.SysUtils.hpp>
  4. #pragma hdrstop
  5. #include "Unit1.h"
  6. //---------------------------------------------------------------------------
  7. #pragma package(smart_init)
  8. #pragma link "GLBaseClasses"
  9. #pragma link "GLCoordinates"
  10. #pragma link "GLCrossPlatform"
  11. #pragma link "GLHUDObjects"
  12. #pragma link "GLObjects"
  13. #pragma link "GLScene"
  14. #pragma link "GLWin32Viewer"
  15. #pragma resource "*.dfm"
  16. TForm1 *Form1;
  17. //---------------------------------------------------------------------------
  18. __fastcall TForm1::TForm1(TComponent* Owner)
  19. : TForm(Owner)
  20. {
  21. }
  22. //---------------------------------------------------------------------------
  23. void __fastcall TForm1::FormCreate(TObject *Sender)
  24. {
  25. TSearchRec sr;
  26. int i;
  27. SetGLSceneMediaDir();
  28. // collect JPeg textures from the demos' media directory
  29. i=FindFirst("*.jpg", faAnyFile, sr);
  30. while (i == 0){
  31. CBImage->Items->Add(sr.Name);
  32. i=FindNext(sr);
  33. }
  34. FindClose(sr);
  35. // default selection
  36. CBFormat->ItemIndex = 0;
  37. CBCompression->ItemIndex = 0;
  38. CBImage->ItemIndex = 0;
  39. CBImageChange(Sender);
  40. }
  41. //---------------------------------------------------------------------------
  42. void __fastcall TForm1::CBImageChange(TObject *Sender)
  43. {
  44. // adjust settings from selection and reload the texture map
  45. HUDSprite1->Material->Texture->TextureFormat = TGLTextureFormat((int)tfRGB+CBFormat->ItemIndex);
  46. HUDSprite1->Material->Texture->Compression = TGLTextureCompression((int)tcNone+CBCompression->ItemIndex);
  47. HUDSprite1->Material->Texture->Image->LoadFromFile(CBImage->Text);
  48. LAPicSize->Caption = IntToStr(HUDSprite1->Material->Texture->Image->Width) + " x " + IntToStr(HUDSprite1->Material->Texture->Image->Height);
  49. if (RBDefault->Checked){
  50. HUDSprite1->Width = HUDSprite1->Material->Texture->Image->Width;
  51. HUDSprite1->Height = HUDSprite1->Material->Texture->Image->Height;
  52. }else {
  53. if (RBDouble->Checked){
  54. HUDSprite1->Width = HUDSprite1->Material->Texture->Image->Width * 2;
  55. HUDSprite1->Height = HUDSprite1->Material->Texture->Image->Height * 2;
  56. } else {
  57. HUDSprite1->Width = HUDSprite1->Material->Texture->Image->Width * 4;
  58. HUDSprite1->Height = HUDSprite1->Material->Texture->Image->Height * 4;
  59. }
  60. }
  61. FormResize(Sender);
  62. newSelection = true;
  63. }
  64. //---------------------------------------------------------------------------
  65. void __fastcall TForm1::FormResize(TObject *Sender)
  66. {
  67. // re-center the HUDSprite
  68. HUDSprite1->Position->X = GLSceneViewer1->Width / 2;
  69. HUDSprite1->Position->Y = GLSceneViewer1->Height / 2;
  70. GLSceneViewer1->Invalidate();
  71. }
  72. //---------------------------------------------------------------------------
  73. void __fastcall TForm1::GLSceneViewer1AfterRender(TObject *Sender)
  74. {
  75. int rgb;
  76. // update compression stats, only the 1st time after a new selection
  77. if (newSelection){
  78. rgb = HUDSprite1->Material->Texture->Image->Width * HUDSprite1->Material->Texture->Image->Height * 4;
  79. LARGB32->Caption = Format("RGBA 32bits would require %d kB", ARRAYOFCONST((rgb / 1024)));
  80. LAUsedMemory->Caption = Format("Required memory : %d kB",
  81. ARRAYOFCONST((HUDSprite1->Material->Texture->TextureImageRequiredMemory() / 1024)));
  82. LACompression->Caption=Format("Compression ratio : %d %%",
  83. ARRAYOFCONST((100-100*HUDSprite1->Material->Texture->TextureImageRequiredMemory() / rgb)));
  84. newSelection = false;
  85. }
  86. }
  87. //---------------------------------------------------------------------------
  88. void __fastcall TForm1::RBDefaultClick(TObject *Sender)
  89. {
  90. CBImageChange(Sender);
  91. }
  92. //---------------------------------------------------------------------------
  93. void __fastcall TForm1::RBDoubleClick(TObject *Sender)
  94. {
  95. CBImageChange(Sender);
  96. }
  97. //---------------------------------------------------------------------------
  98. void __fastcall TForm1::RBQuadClick(TObject *Sender)
  99. {
  100. CBImageChange(Sender);
  101. }
  102. //---------------------------------------------------------------------------
  103. void __fastcall TForm1::CBCompressionChange(TObject *Sender)
  104. {
  105. CBImageChange(Sender);
  106. }
  107. //---------------------------------------------------------------------------
  108. void __fastcall TForm1::CBFormatChange(TObject *Sender)
  109. {
  110. CBImageChange(Sender);
  111. }
  112. //---------------------------------------------------------------------------