Unit1.cpp 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139
  1. //---------------------------------------------------------------------------
  2. #include <vcl.h>
  3. #pragma hdrstop
  4. #include "Unit1.h"
  5. //---------------------------------------------------------------------------
  6. #pragma package(smart_init)
  7. #pragma link "GLBaseClasses"
  8. #pragma link "GLCadencer"
  9. #pragma link "GLCoordinates"
  10. #pragma link "GLCrossPlatform"
  11. #pragma link "GLLensFlare"
  12. #pragma link "GLMaterial"
  13. #pragma link "GLNavigator"
  14. #pragma link "GLObjects"
  15. #pragma link "GLScene"
  16. #pragma link "GLSimpleNavigation"
  17. #pragma link "GLSkyBox"
  18. #pragma link "GLWin32Viewer"
  19. #pragma resource "*.dfm"
  20. TForm1 *Form1;
  21. //---------------------------------------------------------------------------
  22. __fastcall TForm1::TForm1(TComponent* Owner)
  23. : TForm(Owner)
  24. {
  25. }
  26. //---------------------------------------------------------------------------
  27. TGLLibMaterial* __fastcall TForm1::LoadTexture(String Matname, String Filename)
  28. {
  29. GLMaterialLibrary1->AddTextureMaterial(Matname, Filename);
  30. GLMaterialLibrary1->Materials->Items[0]->Material->Texture->Disabled = false;
  31. return GLMaterialLibrary1->Materials->GetLibMaterialByName(Matname);
  32. }
  33. void __fastcall TForm1::FormCreate(TObject *Sender)
  34. {
  35. SetGLSceneMediaDir();
  36. // --------------
  37. // Load graphics
  38. // --------------
  39. // Skybox textures
  40. LoadTexture("Left","icecraterlf.jpg");
  41. GLMaterialLibrary1->Materials->Items[0]->Material->Texture->TextureMode = tmDecal;
  42. LoadTexture("Right","icecraterrt.jpg");
  43. GLMaterialLibrary1->Materials->Items[1]->Material->Texture->TextureMode = tmDecal;
  44. LoadTexture("Top","icecraterup.jpg");
  45. GLMaterialLibrary1->Materials->Items[2]->Material->Texture->TextureMode = tmDecal;
  46. LoadTexture("Bottom","icecraterdn.jpg");
  47. GLMaterialLibrary1->Materials->Items[3]->Material->Texture->TextureMode = tmDecal;
  48. LoadTexture("Front","icecraterft.jpg");
  49. GLMaterialLibrary1->Materials->Items[4]->Material->Texture->TextureMode = tmDecal;
  50. LoadTexture("Back","icecraterbk.jpg");
  51. GLMaterialLibrary1->Materials->Items[5]->Material->Texture->TextureMode = tmDecal;
  52. // Add transparency to clouds
  53. LoadTexture("Clouds","Clouds.jpg")->Material->BlendingMode = bmTransparency;
  54. LoadTexture("Clouds","Clouds.jpg")->Material->FrontProperties->Diffuse->Alpha = 0.2;
  55. // scale the clouds texture
  56. LoadTexture("Clouds","Clouds.jpg")->TextureScale->X = 8;
  57. LoadTexture("Clouds","Clouds.jpg")->TextureScale->Y = 8;
  58. // bricks
  59. LoadTexture("Bricks","rawwall.jpg")->TextureScale->X = 1;
  60. LoadTexture("Bricks","rawwall.jpg")->TextureScale->Y = 32;
  61. LoadTexture("Bricks","rawwall.jpg")->Material->Texture->TextureMode = tmModulate;
  62. LoadTexture("Bricks2","marbletiles.jpg")->TextureScale->X = 6;
  63. LoadTexture("Bricks2","marbletiles.jpg")->TextureScale->Y = 1;
  64. LoadTexture("Bricks2","marbletiles.jpg")->Material->Texture->TextureMode = tmModulate;
  65. //Moon
  66. LoadTexture("Moon","unwrapped moon.jpg")->Material->Texture->TextureMode = tmModulate;
  67. //-----------------------------------------
  68. // Assign materials to objects
  69. //-----------------------------------------
  70. GLCube1->Material->LibMaterialName = "Bricks";
  71. GLCube11->Material->LibMaterialName = "Bricks";
  72. GLCube111->Material->LibMaterialName = "Bricks";
  73. GLCube112->Material->LibMaterialName = "Bricks";
  74. GLCube2->Material->LibMaterialName = "Bricks2";
  75. GLCube21->Material->LibMaterialName = "Bricks2";
  76. GLCube21->Material->LibMaterialName = "Bricks2";
  77. GLCube211->Material->LibMaterialName = "Bricks2";
  78. GLCube212->Material->LibMaterialName = "Bricks2";
  79. GLSphere1->Material->LibMaterialName = "Moon";
  80. GLSphere2->Material->LibMaterialName = "Moon";
  81. GLUserInterface1->MouseLookActive = true;
  82. }
  83. //---------------------------------------------------------------------------
  84. void __fastcall TForm1::GLCadencer1Progress(TObject *Sender, const double deltaTime,
  85. const double newTime)
  86. {
  87. // Make clouds Texture slide
  88. GLMaterialLibrary1->Materials->GetLibMaterialByName("Clouds")->TextureOffset->X =
  89. GLMaterialLibrary1->Materials->GetLibMaterialByName("Clouds")->TextureOffset->X + deltaTime * 0.02;
  90. GLMaterialLibrary1->Materials->GetLibMaterialByName("Clouds")->TextureOffset->Y =
  91. GLMaterialLibrary1->Materials->GetLibMaterialByName("Clouds")->TextureOffset->Y + deltaTime * 0.03;
  92. // Rotate moons
  93. GLSphere1->Turn(deltaTime * 7);
  94. GLSphere2->Turn(deltaTime * 10);
  95. HandleKeys(deltaTime);
  96. GLUserInterface1->MouseLook();
  97. GLUserInterface1->MouseUpdate();
  98. GLSceneViewer1->Invalidate();
  99. }
  100. //---------------------------------------------------------------------------
  101. void __fastcall TForm1::HandleKeys(double d)
  102. {
  103. if (IsKeyDown('W')||IsKeyDown('Z'))
  104. GLCamera1->Move(d);
  105. if (IsKeyDown('S'))
  106. GLCamera1->Move(-d);
  107. if (IsKeyDown('A') || IsKeyDown('A'))
  108. GLCamera1->Slide(-d);
  109. if (IsKeyDown('D'))
  110. GLCamera1->Slide(d);
  111. if(IsKeyDown(VK_SPACE))
  112. Castle->Visible = !Castle->Visible;
  113. if(IsKeyDown(VK_ESCAPE))
  114. Close();
  115. }