fTexFormatC.cpp 4.3 KB

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