DXBuffer.h 3.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. #pragma once
  2. #include "Betriebssystem.h"
  3. struct ID3D11Buffer;
  4. enum D3D11_BIND_FLAG;
  5. namespace Framework
  6. {
  7. class Render3D;
  8. // Eine Schnittstelle zwischen dem Arbeitsspeicher und dem Grafikspeicher
  9. class DXBuffer
  10. {
  11. private:
  12. ID3D11Buffer *buffer;
  13. D3D11_BIND_FLAG bf;
  14. void *data;
  15. bool geändert;
  16. int län;
  17. int altLän;
  18. int elLän;
  19. protected:
  20. int ref;
  21. public:
  22. // Konstruktor
  23. // bind: Der verwendungszweck des Buffers. Beispiel: D3D11_BIND_INDEX_BUFFER, D3D11_BIND_VERTEX_BUFFER.
  24. // eLän: Länge eines einzelnen Elements in Bytes
  25. __declspec( dllexport ) DXBuffer( D3D11_BIND_FLAG bind, int eLän );
  26. // Destruktor
  27. __declspec( dllexport ) ~DXBuffer();
  28. // Setzt den geändert fläg, so das beim nächsten auruf von 'kopieren' die daten neu kopiert werden
  29. __declspec( dllexport ) void setGeändert();
  30. // Ändert die länge des Buffers beim nächsten aufruf von 'kopieren'
  31. // län: Die Länge in Bytes
  32. __declspec( dllexport ) void setLänge( int län );
  33. // Legt fest, was beim nächsten aufruf von 'kopieren' kopiert wird
  34. // data: Ein zeiger auf die Daten
  35. __declspec( dllexport ) void setData( void *data );
  36. // Kopiert die Daten in den Buffer, fals sie sich verändert haben
  37. // zRObj: Das Objekt, mit dem die Grafikkarte angesprochen wird
  38. __declspec( dllexport ) void copieren( Render3D *zRObj );
  39. // Gibt die Länge eines Elementes in bytes zurück
  40. __declspec( dllexport ) int getElementLänge() const;
  41. // Gibt den Buffer zurück
  42. __declspec( dllexport ) ID3D11Buffer *zBuffer() const;
  43. // Gibt die Anzahl der Elemente im Buffer zurück
  44. __declspec( dllexport ) int getElementAnzahl() const;
  45. // Erhöht den Reference Counting Zähler.
  46. // return: this.
  47. __declspec( dllexport ) DXBuffer *getThis();
  48. // Verringert den Reference Counting Zähler. Wenn der Zähler 0 erreicht, wird das Zeichnung automatisch gelöscht.
  49. // return: 0.
  50. __declspec( dllexport ) virtual DXBuffer *release();
  51. };
  52. // Ein Buffer von Eckpunkten eines 3D Models
  53. class DXVertexBuffer : public DXBuffer
  54. {
  55. public:
  56. // Konstruktor
  57. // eSize: Die Länge eines Elementes in Bytes
  58. __declspec( dllexport ) DXVertexBuffer( int eSize );
  59. // Verringert den Reference Counting Zähler. Wenn der Zähler 0 erreicht, wird das Zeichnung automatisch gelöscht.
  60. // return: 0.
  61. __declspec( dllexport ) virtual DXBuffer *release();
  62. };
  63. // Ein Buffer von Indizes aus dem Buffer mit Eckpunkten, wovon immer drei ein Dreieck ergeben, das gezeichnet wird
  64. class DXIndexBuffer : public DXBuffer
  65. {
  66. public:
  67. // Konstruktor
  68. // eSize: Die Länge eines Elementes in Bytes
  69. __declspec( dllexport ) DXIndexBuffer( int eSize );
  70. // Verringert den Reference Counting Zähler. Wenn der Zähler 0 erreicht, wird das Zeichnung automatisch gelöscht.
  71. // return: 0.
  72. __declspec( dllexport ) virtual DXBuffer *release();
  73. };
  74. }