Graphics/DeferredRenderQueue: Replace listener by signals
Former-commit-id: b874409b523a1bfd6d9dd0d74c0f28189411bcca
This commit is contained in:
@@ -22,7 +22,7 @@
|
||||
|
||||
class NzForwardRenderQueue;
|
||||
|
||||
class NAZARA_API NzDeferredRenderQueue : public NzAbstractRenderQueue, NzObjectListener
|
||||
class NAZARA_API NzDeferredRenderQueue : public NzAbstractRenderQueue
|
||||
{
|
||||
public:
|
||||
NzDeferredRenderQueue(NzForwardRenderQueue* forwardQueue);
|
||||
@@ -50,15 +50,10 @@ class NAZARA_API NzDeferredRenderQueue : public NzAbstractRenderQueue, NzObjectL
|
||||
|
||||
struct MeshInstanceEntry
|
||||
{
|
||||
MeshInstanceEntry(NzObjectListener* listener, int indexBufferValue, int vertexBufferValue) :
|
||||
indexBufferListener(listener, indexBufferValue),
|
||||
vertexBufferListener(listener, vertexBufferValue)
|
||||
{
|
||||
}
|
||||
NazaraSlot(NzIndexBuffer, OnIndexBufferRelease, indexBufferReleaseSlot);
|
||||
NazaraSlot(NzVertexBuffer, OnVertexBufferRelease, vertexBufferReleaseSlot);
|
||||
|
||||
std::vector<NzMatrix4f> instances;
|
||||
NzIndexBufferConstListener indexBufferListener;
|
||||
NzVertexBufferConstListener vertexBufferListener;
|
||||
};
|
||||
|
||||
typedef std::map<NzMeshData, MeshInstanceEntry, MeshDataComparator> MeshInstanceContainer;
|
||||
@@ -70,12 +65,8 @@ class NAZARA_API NzDeferredRenderQueue : public NzAbstractRenderQueue, NzObjectL
|
||||
|
||||
struct BatchedModelEntry
|
||||
{
|
||||
BatchedModelEntry(NzObjectListener* listener, int materialValue) :
|
||||
materialListener(listener, materialValue)
|
||||
{
|
||||
}
|
||||
NazaraSlot(NzMaterial, OnMaterialRelease, materialReleaseSlot);
|
||||
|
||||
NzMaterialConstListener materialListener;
|
||||
MeshInstanceContainer meshMap;
|
||||
bool enabled = false;
|
||||
bool instancingEnabled = false;
|
||||
@@ -86,9 +77,9 @@ class NAZARA_API NzDeferredRenderQueue : public NzAbstractRenderQueue, NzObjectL
|
||||
ModelBatches opaqueModels;
|
||||
NzForwardRenderQueue* m_forwardQueue;
|
||||
|
||||
private:
|
||||
bool OnObjectDestroy(const NzRefCounted* object, int index) override;
|
||||
void OnObjectReleased(const NzRefCounted* object, int index) override;
|
||||
void OnIndexBufferInvalidation(const NzIndexBuffer* indexBuffer);
|
||||
void OnMaterialInvalidation(const NzMaterial* material);
|
||||
void OnVertexBufferInvalidation(const NzVertexBuffer* vertexBuffer);
|
||||
};
|
||||
|
||||
#endif // NAZARA_DEFERREDRENDERQUEUE_HPP
|
||||
|
||||
@@ -47,12 +47,6 @@ class NAZARA_API NzForwardRenderQueue : public NzAbstractRenderQueue
|
||||
|
||||
void Sort(const NzAbstractViewer* viewer);
|
||||
|
||||
private:
|
||||
void OnIndexBufferInvalidation(const NzIndexBuffer* indexBuffer);
|
||||
void OnMaterialInvalidation(const NzMaterial* material);
|
||||
void OnTextureInvalidation(const NzTexture* texture);
|
||||
void OnVertexBufferInvalidation(const NzVertexBuffer* vertexBuffer);
|
||||
|
||||
/// Billboards
|
||||
struct BillboardData
|
||||
{
|
||||
@@ -156,6 +150,12 @@ class NAZARA_API NzForwardRenderQueue : public NzAbstractRenderQueue
|
||||
TransparentModelContainer transparentModels;
|
||||
std::vector<TransparentModelData> transparentModelData;
|
||||
std::vector<const NzDrawable*> otherDrawables;
|
||||
|
||||
private:
|
||||
void OnIndexBufferInvalidation(const NzIndexBuffer* indexBuffer);
|
||||
void OnMaterialInvalidation(const NzMaterial* material);
|
||||
void OnTextureInvalidation(const NzTexture* texture);
|
||||
void OnVertexBufferInvalidation(const NzVertexBuffer* vertexBuffer);
|
||||
};
|
||||
|
||||
#endif // NAZARA_FORWARDRENDERQUEUE_HPP
|
||||
|
||||
Reference in New Issue
Block a user