port from perforce
This commit is contained in:
79
aiwaz/Aiwaz/Resources/GeometryBuffer/GeometryBuffer.h
Normal file
79
aiwaz/Aiwaz/Resources/GeometryBuffer/GeometryBuffer.h
Normal file
@@ -0,0 +1,79 @@
|
||||
#pragma once
|
||||
|
||||
#include "IEngine.h"
|
||||
#include "IGeometryBuffer.h"
|
||||
#include "IShader.h"
|
||||
#include "../Commands/CommandUserBase.h"
|
||||
|
||||
|
||||
class GeometryBuffer
|
||||
: public IGeometryBuffer
|
||||
, public CommandUserBase
|
||||
{
|
||||
protected:
|
||||
static const unsigned char SetIndexBufferCommandType = 0;
|
||||
static const unsigned char SetVertexBufferCommandType = 1;
|
||||
static const unsigned char DrawGeometryCommandType = 2;
|
||||
|
||||
public:
|
||||
GeometryBuffer(IEngine& argEngine);
|
||||
virtual ~GeometryBuffer();
|
||||
|
||||
virtual void Uninitialize();
|
||||
|
||||
virtual void SetVertexData(uint32 argVertexCount, uint32 argVertexElementSize, void* a_VertexData_, const std::vector<VertexElement>& argVertexElements, bool argNeedsDynamicAccess);
|
||||
virtual void DeleteVertexData();
|
||||
virtual void SetIndexData(uint32 argIndexCount, uint32* aui_IndexData_, bool argNeedsDynamicAccess);
|
||||
virtual void DeleteIndexData();
|
||||
|
||||
virtual void* MapVertexBuffer(DataAccessMode::Enumeration argAccessMode);
|
||||
virtual void UnmapVertexBuffer();
|
||||
|
||||
virtual uint32* MapIndexBuffer(DataAccessMode::Enumeration argAccessMode);
|
||||
virtual void UnmapIndexBuffer();
|
||||
|
||||
virtual uint32 get_IndexBufferOffset() const { return m_IndexOffset; }
|
||||
virtual void set_IndexBufferOffset(uint32 argValue) { m_IndexOffset = argValue; }
|
||||
virtual uint32 get_IndexBufferUsableLength() const { return m_UsableIndexCount; }
|
||||
virtual void set_IndexBufferUsableLength(uint32 argValue) { m_UsableIndexCount = argValue; }
|
||||
|
||||
virtual uint32 get_IndexBufferLength() const { return m_IndexCount; }
|
||||
virtual uint32 get_VertexBufferLength() const { return m_VertexCount; }
|
||||
|
||||
virtual PrimitiveTopology::Enumeration get_PrimitiveTopology() const { return m_PrimitiveTopology; }
|
||||
virtual void set_PrimitiveTopology(PrimitiveTopology::Enumeration argValue) { m_PrimitiveTopology = argValue; }
|
||||
|
||||
virtual void ConvertToAdjacency();
|
||||
|
||||
// ICommandUser
|
||||
virtual CommandExecuteResult::Enumeration ExecuteCommand(unsigned char argCommandType, ICommandBuffer& argCurrentBuffer, uint32 argCurrentPositon);
|
||||
virtual string8 get_UserName() const { return "GeometryBuffer"; }
|
||||
|
||||
protected:
|
||||
void Render(IShader& argShader);
|
||||
|
||||
protected:
|
||||
IEngine& m_Engine;
|
||||
|
||||
uint32 m_IndexCount;
|
||||
uint32 m_IndexOffset;
|
||||
uint32 m_UsableIndexCount;
|
||||
ID3D10Buffer* m_IndexBuffer;
|
||||
uint32* m_RawIndexData;
|
||||
|
||||
uint32 m_VertexOffset;
|
||||
uint32 m_VertexCount;
|
||||
uint32 m_VertexElementSize;
|
||||
ID3D10Buffer* m_VertexBuffer;
|
||||
void* m_RawVertexData_;
|
||||
|
||||
bool m_VertexDataMapped;
|
||||
bool m_IndexDataMapped;
|
||||
|
||||
PrimitiveTopology::Enumeration m_PrimitiveTopology;
|
||||
std::vector<VertexElement> m_VertexElements;
|
||||
D3D10_INPUT_ELEMENT_DESC* m_InputElementDesc;
|
||||
|
||||
typedef std::map<IShader*, std::vector<ID3D10InputLayout*> > tk_VertexLayoutsPerShaderAndPass;
|
||||
tk_VertexLayoutsPerShaderAndPass m_VertexLayoutsPerShaderAndPass;
|
||||
};
|
||||
Reference in New Issue
Block a user