|
@@ -130,6 +130,10 @@ namespace Framework
|
|
|
DLLEXPORT virtual Model3DData* createModel(const char* name);
|
|
|
// check if a model exists
|
|
|
DLLEXPORT virtual bool hasModel(const char* name);
|
|
|
+ // creates a StructuredBuffer that is stored in the GPU memory and can
|
|
|
+ // be used as a shader resource
|
|
|
+ // \param eSize the size of one element of the buffer in bytes
|
|
|
+ DLLEXPORT virtual DXBuffer* createStructuredBuffer(int eSize) = 0;
|
|
|
};
|
|
|
|
|
|
class DirectX9 : public GraphicsApi
|
|
@@ -157,6 +161,8 @@ namespace Framework
|
|
|
DLLEXPORT void presentFrame() override;
|
|
|
DLLEXPORT Textur* createOrGetTextur(const char* name, Bild* b) override;
|
|
|
DLLEXPORT Bild* zUIRenderBild() const override;
|
|
|
+
|
|
|
+ DLLEXPORT virtual DXBuffer* createStructuredBuffer(int eSize) override;
|
|
|
};
|
|
|
|
|
|
class DirectX11 : public GraphicsApi
|
|
@@ -178,8 +184,6 @@ namespace Framework
|
|
|
D3D11_VIEWPORT* vp;
|
|
|
TexturModel* texturModel;
|
|
|
TexturList* texturRegister;
|
|
|
- ID3D11RasterizerState* texturRS;
|
|
|
- ID3D11RasterizerState* meshRS;
|
|
|
Textur* defaultTextur;
|
|
|
DX11StructuredBuffer* diffuseLights;
|
|
|
DX11StructuredBuffer* pointLights;
|
|
@@ -190,22 +194,17 @@ namespace Framework
|
|
|
int lastModelId = -1;
|
|
|
|
|
|
void renderObject(Model3D* zObj);
|
|
|
- //! Überprüft, ob eine Kugel in dem Sichtbaren Raum der Welt liegt und
|
|
|
- //! gezeichnet werden muss \param pos Der Mittelpunkt der Kugel \param
|
|
|
- //! radius Der Radius der Kugel \param dist Einen Zeiger auf einen
|
|
|
- //! float, in dem das quadrat des Abstands zur Kammeraposition
|
|
|
- //! gespeichert wird, falls diese Funktion true zurückgiebt und der
|
|
|
- //! Zeiger nicht 0 ist
|
|
|
- bool isInFrustrum(
|
|
|
- const Vec3<float>& pos, float radius, float* dist = 0) const;
|
|
|
DLLEXPORT virtual DXBuffer* createIndexBuffer() override;
|
|
|
DLLEXPORT virtual DXBuffer* createVertexBuffer() override;
|
|
|
|
|
|
protected:
|
|
|
+ ID3D11RasterizerState* texturRS;
|
|
|
+ ID3D11RasterizerState* meshRS;
|
|
|
DLLEXPORT virtual DX11VertexShader* initializeVertexShader(
|
|
|
unsigned char* byteCode, int size);
|
|
|
DLLEXPORT virtual DX11PixelShader* initializePixelShader(
|
|
|
unsigned char* byteCode, int size);
|
|
|
+ DLLEXPORT ID3D11DeviceContext* zContext();
|
|
|
|
|
|
public:
|
|
|
DLLEXPORT DirectX11();
|
|
@@ -221,6 +220,17 @@ namespace Framework
|
|
|
DLLEXPORT void presentFrame() override;
|
|
|
DLLEXPORT Textur* createOrGetTextur(const char* name, Bild* b) override;
|
|
|
DLLEXPORT Bild* zUIRenderBild() const override;
|
|
|
+ DLLEXPORT virtual DXBuffer* createStructuredBuffer(int eSize) override;
|
|
|
+ //! Überprüft, ob eine Kugel in dem Sichtbaren Raum der Welt liegt und
|
|
|
+ //! gezeichnet werden muss \param pos Der Mittelpunkt der Kugel \param
|
|
|
+ //! radius Der Radius der Kugel \param dist Einen Zeiger auf einen
|
|
|
+ //! float, in dem das quadrat des Abstands zur Kammeraposition
|
|
|
+ //! gespeichert wird, falls diese Funktion true zurückgiebt und der
|
|
|
+ //! Zeiger nicht 0 ist
|
|
|
+ DLLEXPORT bool isInFrustrum(
|
|
|
+ const Vec3<float>& pos, float radius, float* dist = 0) const;
|
|
|
+ DLLEXPORT bool isInFrustrum(
|
|
|
+ const Vec3<float>& pos, Vec3<float> radius, float* dist = 0) const;
|
|
|
|
|
|
DLLEXPORT static bool isAvailable();
|
|
|
};
|
|
@@ -259,14 +269,6 @@ namespace Framework
|
|
|
DX12PixelShader* pixelShader;
|
|
|
|
|
|
void renderObject(Model3D* zObj);
|
|
|
- //! Überprüft, ob eine Kugel in dem Sichtbaren Raum der Welt liegt und
|
|
|
- //! gezeichnet werden muss \param pos Der Mittelpunkt der Kugel \param
|
|
|
- //! radius Der Radius der Kugel \param dist Einen Zeiger auf einen
|
|
|
- //! float, in dem das quadrat des Abstands zur Kammeraposition
|
|
|
- //! gespeichert wird, falls diese Funktion true zurückgiebt und der
|
|
|
- //! Zeiger nicht 0 ist
|
|
|
- bool isInFrustrum(
|
|
|
- const Vec3<float>& pos, float radius, float* dist = 0) const;
|
|
|
DLLEXPORT virtual DXBuffer* createIndexBuffer() override;
|
|
|
DLLEXPORT virtual DXBuffer* createVertexBuffer() override;
|
|
|
|
|
@@ -285,6 +287,15 @@ namespace Framework
|
|
|
DLLEXPORT void presentFrame() override;
|
|
|
DLLEXPORT Textur* createOrGetTextur(const char* name, Bild* b) override;
|
|
|
DLLEXPORT Bild* zUIRenderBild() const override;
|
|
|
+ DLLEXPORT virtual DXBuffer* createStructuredBuffer(int eSize) override;
|
|
|
+ //! Überprüft, ob eine Kugel in dem Sichtbaren Raum der Welt liegt und
|
|
|
+ //! gezeichnet werden muss \param pos Der Mittelpunkt der Kugel \param
|
|
|
+ //! radius Der Radius der Kugel \param dist Einen Zeiger auf einen
|
|
|
+ //! float, in dem das quadrat des Abstands zur Kammeraposition
|
|
|
+ //! gespeichert wird, falls diese Funktion true zurückgiebt und der
|
|
|
+ //! Zeiger nicht 0 ist
|
|
|
+ DLLEXPORT bool isInFrustrum(
|
|
|
+ const Vec3<float>& pos, float radius, float* dist = 0) const;
|
|
|
|
|
|
DLLEXPORT static bool isAvailable();
|
|
|
};
|