TexturModel.cpp 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. #include "TexturModel.h"
  2. #include "DXBuffer.h"
  3. #include "Globals.h"
  4. #include "GraphicsApi.h"
  5. #include "Model3DList.h"
  6. #include "Textur.h"
  7. #include "TexturList.h"
  8. using namespace Framework;
  9. // Inhalt der TexturModel Klasse
  10. // Konstruktor
  11. TexturModel::TexturModel(GraphicsApi* zApi)
  12. : Model3D()
  13. {
  14. if (zApi->hasModel(Standart3DTypes::texturModel))
  15. model = zApi->getModel(Standart3DTypes::texturModel);
  16. else
  17. {
  18. model = zApi->createModel(Standart3DTypes::texturModel);
  19. Vertex3D* vertecies = new Vertex3D[4];
  20. for (int i = 0; i < 4; i++)
  21. vertecies[i].knochenId = 0;
  22. vertecies[0].pos = Vec3<float>(-50, 50, 0.f);
  23. vertecies[0].tPos = Vec2<float>(0.f, 0.f);
  24. vertecies[1].pos = Vec3<float>(50, 50, 0.f);
  25. vertecies[1].tPos = Vec2<float>(1.f, 0.f);
  26. vertecies[2].pos = Vec3<float>(-50, -50, 0.f);
  27. vertecies[2].tPos = Vec2<float>(0.f, 1.f);
  28. vertecies[3].pos = Vec3<float>(50, -50, 0.f);
  29. vertecies[3].tPos = Vec2<float>(1.f, 1.f);
  30. model->setVertecies(vertecies, 4);
  31. Polygon3D* p = new Polygon3D();
  32. p->indexAnz = 6;
  33. p->indexList = new int[p->indexAnz];
  34. p->indexList[0] = 0;
  35. p->indexList[1] = 3;
  36. p->indexList[2] = 2;
  37. p->indexList[3] = 0;
  38. p->indexList[4] = 1;
  39. p->indexList[5] = 3;
  40. model->addPolygon(p);
  41. model->calculateNormals();
  42. }
  43. textur = new Model3DTextur();
  44. }
  45. // Setzt die Textur die angezeigt werden soll
  46. // t: Die Textur
  47. void TexturModel::setTextur(Textur* t)
  48. {
  49. if (!t) return;
  50. this->textur->setPolygonTextur(0, t);
  51. rend = 1;
  52. }
  53. // Setzt die Größe, in der Die Textur angezeigt wird
  54. // gr: Ein Vektor, der für x und y die breite und höhe beinhaltet
  55. void TexturModel::setSize(Vec2<float> gr)
  56. {
  57. gr /= 2;
  58. Vertex3D* vertecies = new Vertex3D[4];
  59. for (int i = 0; i < 4; i++)
  60. vertecies[i].knochenId = 0;
  61. vertecies[0].pos = Vec3<float>(-gr.x, gr.y, 0.f);
  62. vertecies[0].tPos = Vec2<float>(0.f, 0.f);
  63. vertecies[1].pos = Vec3<float>(gr.x, gr.y, 0.f);
  64. vertecies[1].tPos = Vec2<float>(1.f, 0.f);
  65. vertecies[2].pos = Vec3<float>(-gr.x, -gr.y, 0.f);
  66. vertecies[2].tPos = Vec2<float>(0.f, 1.f);
  67. vertecies[3].pos = Vec3<float>(gr.x, -gr.y, 0.f);
  68. vertecies[3].tPos = Vec2<float>(1.f, 1.f);
  69. model->setVertecies(vertecies, 4);
  70. }
  71. // Setzt die Größe, in der die Textur angezeigt wird
  72. // b: Die Breite, in der die Textur angezeigt wird
  73. // h: Die Höhe, in der die Textur angezeigt wird
  74. void TexturModel::setSize(float b, float h)
  75. {
  76. b /= 2;
  77. h /= 2;
  78. Vertex3D* vertecies = new Vertex3D[4];
  79. for (int i = 0; i < 4; i++)
  80. vertecies[i].knochenId = 0;
  81. vertecies[0].pos = Vec3<float>(-b, h, 0.f);
  82. vertecies[0].tPos = Vec2<float>(0.f, 0.f);
  83. vertecies[1].pos = Vec3<float>(b, h, 0.f);
  84. vertecies[1].tPos = Vec2<float>(1.f, 0.f);
  85. vertecies[2].pos = Vec3<float>(-b, -h, 0.f);
  86. vertecies[2].tPos = Vec2<float>(0.f, 1.f);
  87. vertecies[3].pos = Vec3<float>(b, -h, 0.f);
  88. vertecies[3].tPos = Vec2<float>(1.f, 1.f);
  89. model->setVertecies(vertecies, 4);
  90. }