DXBuffer.h 3.3 KB

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