fCustomQuadC.cpp 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. // ---------------------------------------------------------------------------
  2. #pragma hdrstop
  3. #include "fCustomQuadC.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.RenderContextInfo"
  16. #pragma link "GLS.Context"
  17. #pragma link "GLS.State"
  18. #pragma resource "*.dfm"
  19. TForm1 *Form1;
  20. // ---------------------------------------------------------------------------
  21. __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) {
  22. }
  23. // ---------------------------------------------------------------------------
  24. void __fastcall TForm1::FormCreate(TObject *Sender) {
  25. TFileName Path = GetCurrentAssetPath();
  26. SetCurrentDir(Path + "\\texture");
  27. // dynamically create 2 materials and load 2 textures
  28. GLMaterialLibrary->AddTextureMaterial("wood", "ashwood.jpg")
  29. ->Material->FrontProperties->Emission->Color = clrGray50;
  30. GLMaterialLibrary->AddTextureMaterial("wood", "ashwood.jpg")
  31. ->Material->FaceCulling = fcNoCull;
  32. GLMaterialLibrary->AddTextureMaterial("stone", "walkway.jpg")
  33. ->Material->FrontProperties->Emission->Color = clrGray50;
  34. GLMaterialLibrary->AddTextureMaterial("stone", "walkway.jpg")
  35. ->Material->FaceCulling = fcNoCull;
  36. }
  37. // ---------------------------------------------------------------------------
  38. void __fastcall TForm1::DirectOpenGL1Render(TObject *Sender,
  39. TGLRenderContextInfo &rci)
  40. {
  41. glDisable(GL_CULL_FACE);
  42. // 1st quad, textured with 'wood', using standard method
  43. GLMaterialLibrary->ApplyMaterial("stone", rci);
  44. glBegin(GL_QUADS);
  45. glTexCoord2f(0, 1);
  46. glVertex3f(0.5, 0.5, -0.5);
  47. glTexCoord2f(0, 0);
  48. glVertex3f(-0.5, 0.5, -0.5);
  49. glTexCoord2f(1, 0);
  50. glVertex3f(-0.5, 0, 0.5);
  51. glTexCoord2f(1, 1);
  52. glVertex3f(0.5, 0, 0.5);
  53. glEnd;
  54. GLMaterialLibrary->UnApplyMaterial(rci);
  55. // 2nd quad, textured with 'stone'
  56. // we could apply the material "manually", but this can be usefull if you want to have
  57. // some dynamic material control
  58. GLMaterialLibrary->ApplyMaterial("wood", rci); // umbalanced context activations ?
  59. glBegin(GL_QUADS);
  60. glTexCoord2f(0, 1);
  61. glVertex3f(0.5, -0.5, -0.5);
  62. glTexCoord2f(0, 0);
  63. glVertex3f(0.5, 0, 0.5);
  64. glTexCoord2f(1, 0);
  65. glVertex3f(-0.5, 0, 0.5);
  66. glTexCoord2f(1, 1);
  67. glVertex3f(-0.5, -0.5, -0.5);
  68. glEnd;
  69. GLMaterialLibrary->UnApplyMaterial(rci);
  70. glEnable(GL_CULL_FACE);
  71. }
  72. // ---------------------------------------------------------------------------