Unit1.cpp 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. //---------------------------------------------------------------------------
  2. #pragma hdrstop
  3. #include "Unit1.h"
  4. //---------------------------------------------------------------------------
  5. #pragma package(smart_init)
  6. #pragma link "GLS.BaseClasses"
  7. #pragma link "GLS.Behaviours"
  8. #pragma link "GLS.Cadencer"
  9. #pragma link "GLS.Coordinates"
  10. #pragma link "GLS.GeomObjects"
  11. #pragma link "GLS.Material"
  12. #pragma link "GLS.Objects"
  13. #pragma link "GLS.Scene"
  14. #pragma link "GLS.SceneViewer"
  15. #pragma link "GLS.Context"
  16. #pragma resource "*.dfm"
  17. TForm1 *Form1;
  18. //---------------------------------------------------------------------------
  19. __fastcall TForm1::TForm1(TComponent* Owner)
  20. : TForm(Owner)
  21. {
  22. }
  23. //---------------------------------------------------------------------------
  24. void __fastcall TForm1::FormCreate(TObject *Sender)
  25. {
  26. SetGLSceneMediaDir();
  27. // dynamically create 2 materials and load 2 textures
  28. GLMaterialLibrary->AddTextureMaterial("wood", "ashwood.jpg")->Material->FrontProperties->Emission->Color = clrGray50;
  29. GLMaterialLibrary->AddTextureMaterial("wood", "ashwood.jpg")->Material->FaceCulling = fcNoCull;
  30. GLMaterialLibrary->AddTextureMaterial("stone","walkway.jpg")->Material->FrontProperties->Emission->Color = clrGray50;
  31. GLMaterialLibrary->AddTextureMaterial("stone","walkway.jpg")->Material->FaceCulling = fcNoCull;
  32. }
  33. //---------------------------------------------------------------------------
  34. void __fastcall TForm1::DirectOpenGL1Render(TObject *Sender, TGLRenderContextInfo &rci)
  35. {
  36. TGLLibMaterial *material;
  37. // disable face culling
  38. glDisable(GL_CULL_FACE);
  39. // 1st quad, textured with 'wood', using standard method
  40. GLMaterialLibrary->ApplyMaterial("wood", rci);
  41. glBegin(GL_QUADS);
  42. glTexCoord2f(0, 1); glVertex3f(0.5, 0.5, -0.5);
  43. glTexCoord2f(0, 0); glVertex3f(-0.5, 0.5, -0.5);
  44. glTexCoord2f(1, 0); glVertex3f(-0.5, 0, 0.5);
  45. glTexCoord2f(1, 1); glVertex3f(0.5, 0, 0.5);
  46. glEnd;
  47. GLMaterialLibrary->UnApplyMaterial(rci);
  48. // 2nd quad, textured with 'stone'
  49. // we "manually" apply the material, this can be usefull if you want to have
  50. // some dynamic material control
  51. material = GLMaterialLibrary->Materials->GetLibMaterialByName("stone");
  52. // material->Material->Apply(rci); - unconsistent content
  53. glBegin(GL_QUADS);
  54. glTexCoord2f(0, 1); glVertex3f(0.5, -0.5, -0.5);
  55. glTexCoord2f(0, 0); glVertex3f(0.5, 0, 0.5);
  56. glTexCoord2f(1, 0); glVertex3f(-0.5, 0, 0.5);
  57. glTexCoord2f(1, 1); glVertex3f(-0.5, -0.5, -0.5);
  58. glEnd;
  59. material->Material->UnApply(rci);
  60. // enable face culling again
  61. glEnable(GL_CULL_FACE);
  62. }
  63. //---------------------------------------------------------------------------