Graphics API decouple part7
This commit is contained in:
@@ -37,7 +37,7 @@ void Cube::SetUpVertices()
|
||||
verts[6].pos=max;
|
||||
verts[7].pos=XMFLOAT3(max.x,min.y,max.z);
|
||||
|
||||
BufferDesc bd;
|
||||
GPUBufferDesc bd;
|
||||
ZeroMemory( &bd, sizeof(bd) );
|
||||
bd.Usage = USAGE_DEFAULT;
|
||||
bd.ByteWidth = sizeof( Vertex ) * 8;
|
||||
|
||||
@@ -24,23 +24,23 @@ void wiDepthTarget::Initialize(int width, int height, UINT MSAAC, UINT MSAAQ)
|
||||
|
||||
isCube = false;
|
||||
|
||||
Texture2DDesc depthBufferDesc;
|
||||
ZeroMemory(&depthBufferDesc, sizeof(depthBufferDesc));
|
||||
Texture2DDesc depthGPUBufferDesc;
|
||||
ZeroMemory(&depthGPUBufferDesc, sizeof(depthGPUBufferDesc));
|
||||
|
||||
// Set up the description of the depth buffer.
|
||||
depthBufferDesc.Width = width;
|
||||
depthBufferDesc.Height = height;
|
||||
depthBufferDesc.MipLevels = 1;
|
||||
depthBufferDesc.ArraySize = 1;
|
||||
depthBufferDesc.Format = FORMAT_R24G8_TYPELESS;
|
||||
depthBufferDesc.SampleDesc.Count = MSAAC;
|
||||
depthBufferDesc.SampleDesc.Quality = MSAAQ;
|
||||
depthBufferDesc.Usage = USAGE_DEFAULT;
|
||||
depthBufferDesc.BindFlags = BIND_DEPTH_STENCIL | BIND_SHADER_RESOURCE;
|
||||
depthBufferDesc.CPUAccessFlags = 0;
|
||||
depthBufferDesc.MiscFlags = 0;
|
||||
depthGPUBufferDesc.Width = width;
|
||||
depthGPUBufferDesc.Height = height;
|
||||
depthGPUBufferDesc.MipLevels = 1;
|
||||
depthGPUBufferDesc.ArraySize = 1;
|
||||
depthGPUBufferDesc.Format = FORMAT_R24G8_TYPELESS;
|
||||
depthGPUBufferDesc.SampleDesc.Count = MSAAC;
|
||||
depthGPUBufferDesc.SampleDesc.Quality = MSAAQ;
|
||||
depthGPUBufferDesc.Usage = USAGE_DEFAULT;
|
||||
depthGPUBufferDesc.BindFlags = BIND_DEPTH_STENCIL | BIND_SHADER_RESOURCE;
|
||||
depthGPUBufferDesc.CPUAccessFlags = 0;
|
||||
depthGPUBufferDesc.MiscFlags = 0;
|
||||
|
||||
wiRenderer::GetDevice()->CreateTexture2D(&depthBufferDesc, nullptr, &texture);
|
||||
wiRenderer::GetDevice()->CreateTexture2D(&depthGPUBufferDesc, nullptr, &texture);
|
||||
}
|
||||
void wiDepthTarget::InitializeCube(int size)
|
||||
{
|
||||
@@ -49,23 +49,23 @@ void wiDepthTarget::InitializeCube(int size)
|
||||
|
||||
isCube = true;
|
||||
|
||||
Texture2DDesc depthBufferDesc;
|
||||
ZeroMemory(&depthBufferDesc, sizeof(depthBufferDesc));
|
||||
Texture2DDesc depthGPUBufferDesc;
|
||||
ZeroMemory(&depthGPUBufferDesc, sizeof(depthGPUBufferDesc));
|
||||
|
||||
// Set up the description of the depth buffer.
|
||||
depthBufferDesc.Width = size;
|
||||
depthBufferDesc.Height = size;
|
||||
depthBufferDesc.MipLevels = 1;
|
||||
depthBufferDesc.ArraySize = 6;
|
||||
depthBufferDesc.Format = FORMAT_R32_TYPELESS;
|
||||
depthBufferDesc.SampleDesc.Count = 1;
|
||||
depthBufferDesc.SampleDesc.Quality = 0;
|
||||
depthBufferDesc.Usage = USAGE_DEFAULT;
|
||||
depthBufferDesc.BindFlags = BIND_DEPTH_STENCIL | BIND_SHADER_RESOURCE;
|
||||
depthBufferDesc.CPUAccessFlags = 0;
|
||||
depthBufferDesc.MiscFlags = RESOURCE_MISC_TEXTURECUBE;
|
||||
depthGPUBufferDesc.Width = size;
|
||||
depthGPUBufferDesc.Height = size;
|
||||
depthGPUBufferDesc.MipLevels = 1;
|
||||
depthGPUBufferDesc.ArraySize = 6;
|
||||
depthGPUBufferDesc.Format = FORMAT_R32_TYPELESS;
|
||||
depthGPUBufferDesc.SampleDesc.Count = 1;
|
||||
depthGPUBufferDesc.SampleDesc.Quality = 0;
|
||||
depthGPUBufferDesc.Usage = USAGE_DEFAULT;
|
||||
depthGPUBufferDesc.BindFlags = BIND_DEPTH_STENCIL | BIND_SHADER_RESOURCE;
|
||||
depthGPUBufferDesc.CPUAccessFlags = 0;
|
||||
depthGPUBufferDesc.MiscFlags = RESOURCE_MISC_TEXTURECUBE;
|
||||
|
||||
wiRenderer::GetDevice()->CreateTextureCube(&depthBufferDesc, nullptr, &textureCube);
|
||||
wiRenderer::GetDevice()->CreateTextureCube(&depthGPUBufferDesc, nullptr, &textureCube);
|
||||
}
|
||||
|
||||
void wiDepthTarget::Clear(GRAPHICSTHREAD threadID)
|
||||
|
||||
@@ -25,6 +25,6 @@ public:
|
||||
void CopyFrom(const wiDepthTarget&, GRAPHICSTHREAD threadID);
|
||||
|
||||
wiGraphicsTypes::Texture2D* GetTexture() const { return(isCube ? textureCube : texture); }
|
||||
wiGraphicsTypes::Texture2DDesc GetDesc() const { return GetTexture()->desc; }
|
||||
wiGraphicsTypes::Texture2DDesc GetDesc() const { return GetTexture()->GetDesc(); }
|
||||
};
|
||||
|
||||
|
||||
@@ -332,7 +332,7 @@ void wiEmittedParticle::LoadShaders()
|
||||
}
|
||||
void wiEmittedParticle::SetUpCB()
|
||||
{
|
||||
BufferDesc bd;
|
||||
GPUBufferDesc bd;
|
||||
ZeroMemory( &bd, sizeof(bd) );
|
||||
bd.Usage = USAGE_DYNAMIC;
|
||||
bd.ByteWidth = sizeof(ConstantBuffer);
|
||||
@@ -343,7 +343,7 @@ void wiEmittedParticle::SetUpCB()
|
||||
}
|
||||
void wiEmittedParticle::SetUpStates()
|
||||
{
|
||||
RasterizerDesc rs;
|
||||
RasterizerStateDesc rs;
|
||||
rs.FillMode=FILL_SOLID;
|
||||
rs.CullMode=CULL_BACK;
|
||||
rs.FrontCounterClockwise=true;
|
||||
@@ -375,7 +375,7 @@ void wiEmittedParticle::SetUpStates()
|
||||
|
||||
|
||||
|
||||
DepthStencilDesc dsd;
|
||||
DepthStencilStateDesc dsd;
|
||||
dsd.DepthEnable = false;
|
||||
dsd.DepthWriteMask = DEPTH_WRITE_MASK_ZERO;
|
||||
dsd.DepthFunc = COMPARISON_LESS;
|
||||
@@ -402,7 +402,7 @@ void wiEmittedParticle::SetUpStates()
|
||||
|
||||
|
||||
|
||||
BlendDesc bd;
|
||||
BlendStateDesc bd;
|
||||
ZeroMemory(&bd, sizeof(bd));
|
||||
bd.RenderTarget[0].BlendEnable=true;
|
||||
bd.RenderTarget[0].SrcBlend = BLEND_SRC_ALPHA;
|
||||
@@ -433,7 +433,7 @@ void wiEmittedParticle::LoadVertexBuffer()
|
||||
{
|
||||
vertexBuffer=NULL;
|
||||
|
||||
BufferDesc bd;
|
||||
GPUBufferDesc bd;
|
||||
ZeroMemory( &bd, sizeof(bd) );
|
||||
bd.Usage = USAGE_DYNAMIC;
|
||||
bd.ByteWidth = sizeof( Point ) * MAX_PARTICLES;
|
||||
|
||||
@@ -38,7 +38,7 @@ void wiFont::Initialize()
|
||||
|
||||
void wiFont::SetUpStates()
|
||||
{
|
||||
RasterizerDesc rs;
|
||||
RasterizerStateDesc rs;
|
||||
rs.FillMode=FILL_SOLID;
|
||||
rs.CullMode=CULL_BACK;
|
||||
rs.FrontCounterClockwise=TRUE;
|
||||
@@ -56,7 +56,7 @@ void wiFont::SetUpStates()
|
||||
|
||||
|
||||
|
||||
DepthStencilDesc dsd;
|
||||
DepthStencilStateDesc dsd;
|
||||
dsd.DepthEnable = false;
|
||||
dsd.DepthWriteMask = DEPTH_WRITE_MASK_ZERO;
|
||||
dsd.DepthFunc = COMPARISON_LESS;
|
||||
@@ -83,7 +83,7 @@ void wiFont::SetUpStates()
|
||||
|
||||
|
||||
|
||||
BlendDesc bd;
|
||||
BlendStateDesc bd;
|
||||
ZeroMemory(&bd, sizeof(bd));
|
||||
bd.RenderTarget[0].BlendEnable = TRUE;
|
||||
bd.RenderTarget[0].SrcBlend = BLEND_SRC_ALPHA;
|
||||
@@ -98,7 +98,7 @@ void wiFont::SetUpStates()
|
||||
}
|
||||
void wiFont::SetUpCB()
|
||||
{
|
||||
BufferDesc bd;
|
||||
GPUBufferDesc bd;
|
||||
ZeroMemory( &bd, sizeof(bd) );
|
||||
bd.Usage = USAGE_DYNAMIC;
|
||||
bd.ByteWidth = sizeof(ConstantBuffer);
|
||||
@@ -210,7 +210,7 @@ void wiFont::ModifyGeo(const wstring& text, wiFontProps props, int style, GRAPHI
|
||||
|
||||
void wiFont::LoadVertexBuffer()
|
||||
{
|
||||
BufferDesc bd;
|
||||
GPUBufferDesc bd;
|
||||
ZeroMemory( &bd, sizeof(bd) );
|
||||
bd.Usage = USAGE_DYNAMIC;
|
||||
bd.ByteWidth = sizeof( Vertex ) * MAX_TEXT * 4;
|
||||
@@ -232,7 +232,7 @@ void wiFont::LoadIndices()
|
||||
indices[i/4*6+5]=i/4*4+3;
|
||||
}
|
||||
|
||||
BufferDesc bd;
|
||||
GPUBufferDesc bd;
|
||||
ZeroMemory( &bd, sizeof(bd) );
|
||||
bd.Usage = USAGE_DEFAULT;
|
||||
bd.ByteWidth = sizeof( unsigned long ) * MAX_TEXT * 6;
|
||||
|
||||
@@ -362,7 +362,7 @@ namespace wiGraphicsTypes
|
||||
FLOAT MinLOD;
|
||||
FLOAT MaxLOD;
|
||||
};
|
||||
struct RasterizerDesc
|
||||
struct RasterizerStateDesc
|
||||
{
|
||||
FILL_MODE FillMode;
|
||||
CULL_MODE CullMode;
|
||||
@@ -382,7 +382,7 @@ namespace wiGraphicsTypes
|
||||
STENCIL_OP StencilPassOp;
|
||||
COMPARISON_FUNC StencilFunc;
|
||||
};
|
||||
struct DepthStencilDesc
|
||||
struct DepthStencilStateDesc
|
||||
{
|
||||
BOOL DepthEnable;
|
||||
DEPTH_WRITE_MASK DepthWriteMask;
|
||||
@@ -393,7 +393,7 @@ namespace wiGraphicsTypes
|
||||
DepthStencilOpDesc FrontFace;
|
||||
DepthStencilOpDesc BackFace;
|
||||
};
|
||||
struct RenderTargetBlendDesc
|
||||
struct RenderTargetBlendStateDesc
|
||||
{
|
||||
BOOL BlendEnable;
|
||||
BLEND SrcBlend;
|
||||
@@ -404,13 +404,13 @@ namespace wiGraphicsTypes
|
||||
BLEND_OP BlendOpAlpha;
|
||||
UINT8 RenderTargetWriteMask;
|
||||
};
|
||||
struct BlendDesc
|
||||
struct BlendStateDesc
|
||||
{
|
||||
BOOL AlphaToCoverageEnable;
|
||||
BOOL IndependentBlendEnable;
|
||||
RenderTargetBlendDesc RenderTarget[8];
|
||||
RenderTargetBlendStateDesc RenderTarget[8];
|
||||
};
|
||||
struct BufferDesc
|
||||
struct GPUBufferDesc
|
||||
{
|
||||
UINT ByteWidth;
|
||||
USAGE Usage;
|
||||
@@ -527,6 +527,7 @@ namespace wiGraphicsTypes
|
||||
friend class GraphicsDevice_DX11;
|
||||
private:
|
||||
ID3D11SamplerState* resource_DX11;
|
||||
SamplerDesc desc;
|
||||
public:
|
||||
Sampler() :resource_DX11(nullptr) {}
|
||||
~Sampler()
|
||||
@@ -535,21 +536,31 @@ namespace wiGraphicsTypes
|
||||
}
|
||||
|
||||
bool IsValid() { return resource_DX11 != nullptr; }
|
||||
SamplerDesc GetDesc() { return desc; }
|
||||
};
|
||||
|
||||
class GPUBuffer
|
||||
{
|
||||
friend class GraphicsDevice_DX11;
|
||||
private:
|
||||
ID3D11Buffer* resource_DX11;
|
||||
ID3D11Buffer* resource_DX11[2]; // double buffer
|
||||
GPUBufferDesc desc;
|
||||
int activeBuffer;
|
||||
public:
|
||||
GPUBuffer() :resource_DX11(nullptr) {}
|
||||
GPUBuffer()
|
||||
{
|
||||
activeBuffer = 0;
|
||||
SAFE_INIT(resource_DX11[0]);
|
||||
SAFE_INIT(resource_DX11[1]);
|
||||
}
|
||||
~GPUBuffer()
|
||||
{
|
||||
SAFE_RELEASE(resource_DX11);
|
||||
SAFE_RELEASE(resource_DX11[0]);
|
||||
SAFE_RELEASE(resource_DX11[1]);
|
||||
}
|
||||
|
||||
bool IsValid() { return resource_DX11 != nullptr; }
|
||||
bool IsValid() { return resource_DX11[activeBuffer] != nullptr; }
|
||||
GPUBufferDesc GetDesc() { return desc; }
|
||||
};
|
||||
|
||||
class VertexLayout
|
||||
@@ -572,6 +583,7 @@ namespace wiGraphicsTypes
|
||||
friend class GraphicsDevice_DX11;
|
||||
private:
|
||||
ID3D11BlendState* resource_DX11;
|
||||
BlendStateDesc desc;
|
||||
public:
|
||||
BlendState() :resource_DX11(nullptr) {}
|
||||
~BlendState()
|
||||
@@ -580,6 +592,7 @@ namespace wiGraphicsTypes
|
||||
}
|
||||
|
||||
bool IsValid() { return resource_DX11 != nullptr; }
|
||||
BlendStateDesc GetDesc() { return desc; }
|
||||
};
|
||||
|
||||
class DepthStencilState
|
||||
@@ -587,6 +600,7 @@ namespace wiGraphicsTypes
|
||||
friend class GraphicsDevice_DX11;
|
||||
private:
|
||||
ID3D11DepthStencilState* resource_DX11;
|
||||
DepthStencilStateDesc desc;
|
||||
public:
|
||||
DepthStencilState() :resource_DX11(nullptr) {}
|
||||
~DepthStencilState()
|
||||
@@ -595,6 +609,7 @@ namespace wiGraphicsTypes
|
||||
}
|
||||
|
||||
bool IsValid() { return resource_DX11 != nullptr; }
|
||||
DepthStencilStateDesc GetDesc() { return desc; }
|
||||
};
|
||||
|
||||
class RasterizerState
|
||||
@@ -602,6 +617,7 @@ namespace wiGraphicsTypes
|
||||
friend class GraphicsDevice_DX11;
|
||||
private:
|
||||
ID3D11RasterizerState* resource_DX11;
|
||||
RasterizerStateDesc desc;
|
||||
public:
|
||||
RasterizerState() :resource_DX11(nullptr) {}
|
||||
~RasterizerState()
|
||||
@@ -610,6 +626,7 @@ namespace wiGraphicsTypes
|
||||
}
|
||||
|
||||
bool IsValid() { return resource_DX11 != nullptr; }
|
||||
RasterizerStateDesc GetDesc() { return desc; }
|
||||
};
|
||||
|
||||
class ClassLinkage
|
||||
@@ -664,14 +681,15 @@ namespace wiGraphicsTypes
|
||||
friend class GraphicsDevice_DX11;
|
||||
private:
|
||||
ID3D11Texture2D* texture2D_DX11;
|
||||
Texture2DDesc desc;
|
||||
public:
|
||||
Texture2DDesc desc;
|
||||
|
||||
Texture2D() :Texture(), texture2D_DX11(nullptr) {}
|
||||
virtual ~Texture2D()
|
||||
{
|
||||
SAFE_RELEASE(texture2D_DX11);
|
||||
}
|
||||
|
||||
Texture2DDesc GetDesc() { return desc; }
|
||||
};
|
||||
class TextureCube : public Texture2D
|
||||
{
|
||||
@@ -684,13 +702,13 @@ namespace wiGraphicsTypes
|
||||
class GraphicsDevice : public wiThreadSafeManager
|
||||
{
|
||||
protected:
|
||||
bool oddFrame;
|
||||
long FRAMECOUNT;
|
||||
bool VSYNC;
|
||||
int SCREENWIDTH, SCREENHEIGHT;
|
||||
public:
|
||||
GraphicsDevice() :oddFrame(false), VSYNC(true), SCREENWIDTH(0), SCREENHEIGHT(0) {}
|
||||
GraphicsDevice() :FRAMECOUNT(0), VSYNC(true), SCREENWIDTH(0), SCREENHEIGHT(0) {}
|
||||
|
||||
virtual HRESULT CreateBuffer(const BufferDesc *pDesc, const SubresourceData* pInitialData, GPUBuffer *ppBuffer) = 0;
|
||||
virtual HRESULT CreateBuffer(const GPUBufferDesc *pDesc, const SubresourceData* pInitialData, GPUBuffer *ppBuffer) = 0;
|
||||
virtual HRESULT CreateTexture1D() = 0;
|
||||
virtual HRESULT CreateTexture2D(const Texture2DDesc* pDesc, const SubresourceData *pInitialData, Texture2D **ppTexture2D) = 0;
|
||||
virtual HRESULT CreateTexture3D() = 0;
|
||||
@@ -708,9 +726,9 @@ namespace wiGraphicsTypes
|
||||
virtual HRESULT CreateHullShader(const void *pShaderBytecode, SIZE_T BytecodeLength, ClassLinkage* pClassLinkage, HullShader *pHullShader) = 0;
|
||||
virtual HRESULT CreateDomainShader(const void *pShaderBytecode, SIZE_T BytecodeLength, ClassLinkage* pClassLinkage, DomainShader *pDomainShader) = 0;
|
||||
virtual HRESULT CreateComputeShader(const void *pShaderBytecode, SIZE_T BytecodeLength, ClassLinkage* pClassLinkage, ComputeShader *pComputeShader) = 0;
|
||||
virtual HRESULT CreateBlendState(const BlendDesc *pBlendStateDesc, BlendState *pBlendState) = 0;
|
||||
virtual HRESULT CreateDepthStencilState(const DepthStencilDesc *pDepthStencilDesc, DepthStencilState *pDepthStencilState) = 0;
|
||||
virtual HRESULT CreateRasterizerState(const RasterizerDesc *pRasterizerDesc, RasterizerState *pRasterizerState) = 0;
|
||||
virtual HRESULT CreateBlendState(const BlendStateDesc *pBlendStateDesc, BlendState *pBlendState) = 0;
|
||||
virtual HRESULT CreateDepthStencilState(const DepthStencilStateDesc *pDepthStencilStateDesc, DepthStencilState *pDepthStencilState) = 0;
|
||||
virtual HRESULT CreateRasterizerState(const RasterizerStateDesc *pRasterizerStateDesc, RasterizerState *pRasterizerState) = 0;
|
||||
virtual HRESULT CreateSamplerState(const SamplerDesc *pSamplerDesc, Sampler *pSamplerState) = 0;
|
||||
|
||||
virtual void PresentBegin() = 0;
|
||||
@@ -723,6 +741,7 @@ namespace wiGraphicsTypes
|
||||
|
||||
bool GetVSyncEnabled() { return VSYNC; }
|
||||
void SetVSyncEnabled(bool value) { VSYNC = value; }
|
||||
long GetFrameCount() { return FRAMECOUNT; }
|
||||
|
||||
int GetScreenWidth() { return SCREENWIDTH; }
|
||||
int GetScreenHeight() { return SCREENHEIGHT; }
|
||||
|
||||
@@ -998,7 +998,7 @@ inline D3D11_SUBRESOURCE_DATA* _ConvertSubresourceData(const SubresourceData* pI
|
||||
}
|
||||
|
||||
|
||||
HRESULT GraphicsDevice_DX11::CreateBuffer(const BufferDesc *pDesc, const SubresourceData* pInitialData, GPUBuffer *ppBuffer)
|
||||
HRESULT GraphicsDevice_DX11::CreateBuffer(const GPUBufferDesc *pDesc, const SubresourceData* pInitialData, GPUBuffer *ppBuffer)
|
||||
{
|
||||
D3D11_BUFFER_DESC desc;
|
||||
desc.ByteWidth = pDesc->ByteWidth;
|
||||
@@ -1010,7 +1010,15 @@ HRESULT GraphicsDevice_DX11::CreateBuffer(const BufferDesc *pDesc, const Subreso
|
||||
|
||||
D3D11_SUBRESOURCE_DATA* data = _ConvertSubresourceData(pInitialData);
|
||||
|
||||
return device->CreateBuffer(&desc, data, &ppBuffer->resource_DX11);
|
||||
ppBuffer->desc = *pDesc;
|
||||
HRESULT hr = device->CreateBuffer(&desc, data, &ppBuffer->resource_DX11[0]);
|
||||
assert(SUCCEEDED(hr) && "GPUBuffer Creation failed!");
|
||||
if (desc.Usage != USAGE_IMMUTABLE)
|
||||
{
|
||||
hr = device->CreateBuffer(&desc, data, &ppBuffer->resource_DX11[1]);
|
||||
assert(SUCCEEDED(hr) && "GPUBuffer Creation failed!");
|
||||
}
|
||||
return hr;
|
||||
}
|
||||
HRESULT GraphicsDevice_DX11::CreateTexture1D()
|
||||
{
|
||||
@@ -1227,7 +1235,7 @@ HRESULT GraphicsDevice_DX11::CreateComputeShader(const void *pShaderBytecode, SI
|
||||
{
|
||||
return device->CreateComputeShader(pShaderBytecode, BytecodeLength, (pClassLinkage == nullptr ? nullptr : pClassLinkage->resource_DX11), &pComputeShader->resource_DX11);
|
||||
}
|
||||
HRESULT GraphicsDevice_DX11::CreateBlendState(const BlendDesc *pBlendStateDesc, BlendState *pBlendState)
|
||||
HRESULT GraphicsDevice_DX11::CreateBlendState(const BlendStateDesc *pBlendStateDesc, BlendState *pBlendState)
|
||||
{
|
||||
D3D11_BLEND_DESC desc;
|
||||
desc.AlphaToCoverageEnable = pBlendStateDesc->AlphaToCoverageEnable;
|
||||
@@ -1244,42 +1252,45 @@ HRESULT GraphicsDevice_DX11::CreateBlendState(const BlendDesc *pBlendStateDesc,
|
||||
desc.RenderTarget[i].RenderTargetWriteMask = pBlendStateDesc->RenderTarget[i].RenderTargetWriteMask;
|
||||
}
|
||||
|
||||
pBlendState->desc = *pBlendStateDesc;
|
||||
return device->CreateBlendState(&desc, &pBlendState->resource_DX11);
|
||||
}
|
||||
HRESULT GraphicsDevice_DX11::CreateDepthStencilState(const DepthStencilDesc *pDepthStencilDesc, DepthStencilState *pDepthStencilState)
|
||||
HRESULT GraphicsDevice_DX11::CreateDepthStencilState(const DepthStencilStateDesc *pDepthStencilStateDesc, DepthStencilState *pDepthStencilState)
|
||||
{
|
||||
D3D11_DEPTH_STENCIL_DESC desc;
|
||||
desc.DepthEnable = pDepthStencilDesc->DepthEnable;
|
||||
desc.DepthWriteMask = _ConvertDepthWriteMask(pDepthStencilDesc->DepthWriteMask);
|
||||
desc.DepthFunc = _ConvertComparisonFunc(pDepthStencilDesc->DepthFunc);
|
||||
desc.StencilEnable = pDepthStencilDesc->StencilEnable;
|
||||
desc.StencilReadMask = pDepthStencilDesc->StencilReadMask;
|
||||
desc.StencilWriteMask = pDepthStencilDesc->StencilWriteMask;
|
||||
desc.FrontFace.StencilDepthFailOp = _ConvertStencilOp(pDepthStencilDesc->FrontFace.StencilDepthFailOp);
|
||||
desc.FrontFace.StencilFailOp = _ConvertStencilOp(pDepthStencilDesc->FrontFace.StencilFailOp);
|
||||
desc.FrontFace.StencilFunc = _ConvertComparisonFunc(pDepthStencilDesc->FrontFace.StencilFunc);
|
||||
desc.FrontFace.StencilPassOp = _ConvertStencilOp(pDepthStencilDesc->FrontFace.StencilPassOp);
|
||||
desc.BackFace.StencilDepthFailOp = _ConvertStencilOp(pDepthStencilDesc->BackFace.StencilDepthFailOp);
|
||||
desc.BackFace.StencilFailOp = _ConvertStencilOp(pDepthStencilDesc->BackFace.StencilFailOp);
|
||||
desc.BackFace.StencilFunc = _ConvertComparisonFunc(pDepthStencilDesc->BackFace.StencilFunc);
|
||||
desc.BackFace.StencilPassOp = _ConvertStencilOp(pDepthStencilDesc->BackFace.StencilPassOp);
|
||||
desc.DepthEnable = pDepthStencilStateDesc->DepthEnable;
|
||||
desc.DepthWriteMask = _ConvertDepthWriteMask(pDepthStencilStateDesc->DepthWriteMask);
|
||||
desc.DepthFunc = _ConvertComparisonFunc(pDepthStencilStateDesc->DepthFunc);
|
||||
desc.StencilEnable = pDepthStencilStateDesc->StencilEnable;
|
||||
desc.StencilReadMask = pDepthStencilStateDesc->StencilReadMask;
|
||||
desc.StencilWriteMask = pDepthStencilStateDesc->StencilWriteMask;
|
||||
desc.FrontFace.StencilDepthFailOp = _ConvertStencilOp(pDepthStencilStateDesc->FrontFace.StencilDepthFailOp);
|
||||
desc.FrontFace.StencilFailOp = _ConvertStencilOp(pDepthStencilStateDesc->FrontFace.StencilFailOp);
|
||||
desc.FrontFace.StencilFunc = _ConvertComparisonFunc(pDepthStencilStateDesc->FrontFace.StencilFunc);
|
||||
desc.FrontFace.StencilPassOp = _ConvertStencilOp(pDepthStencilStateDesc->FrontFace.StencilPassOp);
|
||||
desc.BackFace.StencilDepthFailOp = _ConvertStencilOp(pDepthStencilStateDesc->BackFace.StencilDepthFailOp);
|
||||
desc.BackFace.StencilFailOp = _ConvertStencilOp(pDepthStencilStateDesc->BackFace.StencilFailOp);
|
||||
desc.BackFace.StencilFunc = _ConvertComparisonFunc(pDepthStencilStateDesc->BackFace.StencilFunc);
|
||||
desc.BackFace.StencilPassOp = _ConvertStencilOp(pDepthStencilStateDesc->BackFace.StencilPassOp);
|
||||
|
||||
pDepthStencilState->desc = *pDepthStencilStateDesc;
|
||||
return device->CreateDepthStencilState(&desc, &pDepthStencilState->resource_DX11);
|
||||
}
|
||||
HRESULT GraphicsDevice_DX11::CreateRasterizerState(const RasterizerDesc *pRasterizerDesc, RasterizerState *pRasterizerState)
|
||||
HRESULT GraphicsDevice_DX11::CreateRasterizerState(const RasterizerStateDesc *pRasterizerStateDesc, RasterizerState *pRasterizerState)
|
||||
{
|
||||
D3D11_RASTERIZER_DESC desc;
|
||||
desc.FillMode = _ConvertFillMode(pRasterizerDesc->FillMode);
|
||||
desc.CullMode = _ConvertCullMode(pRasterizerDesc->CullMode);
|
||||
desc.FrontCounterClockwise = pRasterizerDesc->FrontCounterClockwise;
|
||||
desc.DepthBias = pRasterizerDesc->DepthBias;
|
||||
desc.DepthBiasClamp = pRasterizerDesc->DepthBiasClamp;
|
||||
desc.SlopeScaledDepthBias = pRasterizerDesc->SlopeScaledDepthBias;
|
||||
desc.DepthClipEnable = pRasterizerDesc->DepthClipEnable;
|
||||
desc.ScissorEnable = pRasterizerDesc->ScissorEnable;
|
||||
desc.MultisampleEnable = pRasterizerDesc->MultisampleEnable;
|
||||
desc.AntialiasedLineEnable = pRasterizerDesc->AntialiasedLineEnable;
|
||||
desc.FillMode = _ConvertFillMode(pRasterizerStateDesc->FillMode);
|
||||
desc.CullMode = _ConvertCullMode(pRasterizerStateDesc->CullMode);
|
||||
desc.FrontCounterClockwise = pRasterizerStateDesc->FrontCounterClockwise;
|
||||
desc.DepthBias = pRasterizerStateDesc->DepthBias;
|
||||
desc.DepthBiasClamp = pRasterizerStateDesc->DepthBiasClamp;
|
||||
desc.SlopeScaledDepthBias = pRasterizerStateDesc->SlopeScaledDepthBias;
|
||||
desc.DepthClipEnable = pRasterizerStateDesc->DepthClipEnable;
|
||||
desc.ScissorEnable = pRasterizerStateDesc->ScissorEnable;
|
||||
desc.MultisampleEnable = pRasterizerStateDesc->MultisampleEnable;
|
||||
desc.AntialiasedLineEnable = pRasterizerStateDesc->AntialiasedLineEnable;
|
||||
|
||||
pRasterizerState->desc = *pRasterizerStateDesc;
|
||||
return device->CreateRasterizerState(&desc, &pRasterizerState->resource_DX11);
|
||||
}
|
||||
HRESULT GraphicsDevice_DX11::CreateSamplerState(const SamplerDesc *pSamplerDesc, Sampler *pSamplerState)
|
||||
@@ -1299,6 +1310,7 @@ HRESULT GraphicsDevice_DX11::CreateSamplerState(const SamplerDesc *pSamplerDesc,
|
||||
desc.MinLOD = pSamplerDesc->MinLOD;
|
||||
desc.MaxLOD = pSamplerDesc->MaxLOD;
|
||||
|
||||
pSamplerState->desc = *pSamplerDesc;
|
||||
return device->CreateSamplerState(&desc, &pSamplerState->resource_DX11);
|
||||
}
|
||||
|
||||
@@ -1322,7 +1334,7 @@ void GraphicsDevice_DX11::PresentEnd()
|
||||
|
||||
UnbindTextures(0, TEXSLOT_COUNT, GRAPHICSTHREAD_IMMEDIATE);
|
||||
|
||||
oddFrame = !oddFrame;
|
||||
FRAMECOUNT++;
|
||||
|
||||
UNLOCK();
|
||||
}
|
||||
@@ -1357,14 +1369,14 @@ HRESULT GraphicsDevice_DX11::CreateTextureFromFile(const wstring& fileName, Text
|
||||
if (!fileName.substr(fileName.length() - 4).compare(wstring(L".dds")))
|
||||
{
|
||||
// Load dds
|
||||
hr = CreateDDSTextureFromFile(device, fileName.c_str(), nullptr, &(*ppTexture)->shaderResourceView_DX11);
|
||||
hr = CreateDDSTextureFromFile(device, fileName.c_str(), (ID3D11Resource**)&(*ppTexture)->texture2D_DX11, &(*ppTexture)->shaderResourceView_DX11);
|
||||
}
|
||||
else
|
||||
{
|
||||
// Load WIC
|
||||
if (mipMaps && threadID == GRAPHICSTHREAD_IMMEDIATE)
|
||||
LOCK();
|
||||
hr = CreateWICTextureFromFile(mipMaps, device, deviceContexts[threadID], fileName.c_str(), nullptr, &(*ppTexture)->shaderResourceView_DX11);
|
||||
hr = CreateWICTextureFromFile(mipMaps, device, deviceContexts[threadID], fileName.c_str(), (ID3D11Resource**)&(*ppTexture)->texture2D_DX11, &(*ppTexture)->shaderResourceView_DX11);
|
||||
if (mipMaps && threadID == GRAPHICSTHREAD_IMMEDIATE)
|
||||
UNLOCK();
|
||||
}
|
||||
|
||||
@@ -27,7 +27,7 @@ namespace wiGraphicsTypes
|
||||
|
||||
~GraphicsDevice_DX11();
|
||||
|
||||
virtual HRESULT CreateBuffer(const BufferDesc *pDesc, const SubresourceData* pInitialData, GPUBuffer *ppBuffer);
|
||||
virtual HRESULT CreateBuffer(const GPUBufferDesc *pDesc, const SubresourceData* pInitialData, GPUBuffer *ppBuffer);
|
||||
virtual HRESULT CreateTexture1D();
|
||||
virtual HRESULT CreateTexture2D(const Texture2DDesc* pDesc, const SubresourceData *pInitialData, Texture2D **ppTexture2D);
|
||||
virtual HRESULT CreateTexture3D();
|
||||
@@ -45,9 +45,9 @@ namespace wiGraphicsTypes
|
||||
virtual HRESULT CreateHullShader(const void *pShaderBytecode, SIZE_T BytecodeLength, ClassLinkage* pClassLinkage, HullShader *pHullShader);
|
||||
virtual HRESULT CreateDomainShader(const void *pShaderBytecode, SIZE_T BytecodeLength, ClassLinkage* pClassLinkage, DomainShader *pDomainShader);
|
||||
virtual HRESULT CreateComputeShader(const void *pShaderBytecode, SIZE_T BytecodeLength, ClassLinkage* pClassLinkage, ComputeShader *pComputeShader);
|
||||
virtual HRESULT CreateBlendState(const BlendDesc *pBlendStateDesc, BlendState *pBlendState);
|
||||
virtual HRESULT CreateDepthStencilState(const DepthStencilDesc *pDepthStencilDesc, DepthStencilState *pDepthStencilState);
|
||||
virtual HRESULT CreateRasterizerState(const RasterizerDesc *pRasterizerDesc, RasterizerState *pRasterizerState);
|
||||
virtual HRESULT CreateBlendState(const BlendStateDesc *pBlendStateDesc, BlendState *pBlendState);
|
||||
virtual HRESULT CreateDepthStencilState(const DepthStencilStateDesc *pDepthStencilStateDesc, DepthStencilState *pDepthStencilState);
|
||||
virtual HRESULT CreateRasterizerState(const RasterizerStateDesc *pRasterizerStateDesc, RasterizerState *pRasterizerState);
|
||||
virtual HRESULT CreateSamplerState(const SamplerDesc *pSamplerDesc, Sampler *pSamplerState);
|
||||
|
||||
virtual void PresentBegin();
|
||||
@@ -175,45 +175,45 @@ namespace wiGraphicsTypes
|
||||
}
|
||||
virtual void BindConstantBufferPS(const GPUBuffer* buffer, int slot, GRAPHICSTHREAD threadID = GRAPHICSTHREAD_IMMEDIATE) {
|
||||
if (deviceContexts[threadID] != nullptr) {
|
||||
ID3D11Buffer* res = buffer ? buffer->resource_DX11 : nullptr;
|
||||
ID3D11Buffer* res = buffer ? buffer->resource_DX11[buffer->activeBuffer] : nullptr;
|
||||
deviceContexts[threadID]->PSSetConstantBuffers(slot, 1, &res);
|
||||
}
|
||||
}
|
||||
virtual void BindConstantBufferVS(const GPUBuffer* buffer, int slot, GRAPHICSTHREAD threadID = GRAPHICSTHREAD_IMMEDIATE) {
|
||||
if (deviceContexts[threadID] != nullptr) {
|
||||
ID3D11Buffer* res = buffer ? buffer->resource_DX11 : nullptr;
|
||||
ID3D11Buffer* res = buffer ? buffer->resource_DX11[buffer->activeBuffer] : nullptr;
|
||||
deviceContexts[threadID]->VSSetConstantBuffers(slot, 1, &res);
|
||||
|
||||
}
|
||||
}
|
||||
virtual void BindConstantBufferGS(const GPUBuffer* buffer, int slot, GRAPHICSTHREAD threadID = GRAPHICSTHREAD_IMMEDIATE) {
|
||||
if (deviceContexts[threadID] != nullptr) {
|
||||
ID3D11Buffer* res = buffer ? buffer->resource_DX11 : nullptr;
|
||||
ID3D11Buffer* res = buffer ? buffer->resource_DX11[buffer->activeBuffer] : nullptr;
|
||||
deviceContexts[threadID]->GSSetConstantBuffers(slot, 1, &res);
|
||||
}
|
||||
}
|
||||
virtual void BindConstantBufferDS(const GPUBuffer* buffer, int slot, GRAPHICSTHREAD threadID = GRAPHICSTHREAD_IMMEDIATE) {
|
||||
if (deviceContexts[threadID] != nullptr) {
|
||||
ID3D11Buffer* res = buffer ? buffer->resource_DX11 : nullptr;
|
||||
ID3D11Buffer* res = buffer ? buffer->resource_DX11[buffer->activeBuffer] : nullptr;
|
||||
deviceContexts[threadID]->DSSetConstantBuffers(slot, 1, &res);
|
||||
}
|
||||
}
|
||||
virtual void BindConstantBufferHS(const GPUBuffer* buffer, int slot, GRAPHICSTHREAD threadID = GRAPHICSTHREAD_IMMEDIATE) {
|
||||
if (deviceContexts[threadID] != nullptr) {
|
||||
ID3D11Buffer* res = buffer ? buffer->resource_DX11 : nullptr;
|
||||
ID3D11Buffer* res = buffer ? buffer->resource_DX11[buffer->activeBuffer] : nullptr;
|
||||
deviceContexts[threadID]->HSSetConstantBuffers(slot, 1, &res);
|
||||
}
|
||||
}
|
||||
virtual void BindVertexBuffer(const GPUBuffer* vertexBuffer, int slot, UINT stride, GRAPHICSTHREAD threadID = GRAPHICSTHREAD_IMMEDIATE) {
|
||||
if (deviceContexts[threadID] != nullptr) {
|
||||
UINT offset = 0;
|
||||
ID3D11Buffer* res = vertexBuffer ? vertexBuffer->resource_DX11 : nullptr;
|
||||
ID3D11Buffer* res = vertexBuffer ? vertexBuffer->resource_DX11[vertexBuffer->activeBuffer] : nullptr;
|
||||
deviceContexts[threadID]->IASetVertexBuffers(slot, 1, &res, &stride, &offset);
|
||||
}
|
||||
}
|
||||
virtual void BindIndexBuffer(const GPUBuffer* indexBuffer, GRAPHICSTHREAD threadID = GRAPHICSTHREAD_IMMEDIATE) {
|
||||
if (deviceContexts[threadID] != nullptr) {
|
||||
ID3D11Buffer* res = indexBuffer ? indexBuffer->resource_DX11 : nullptr;
|
||||
ID3D11Buffer* res = indexBuffer ? indexBuffer->resource_DX11[indexBuffer->activeBuffer] : nullptr;
|
||||
deviceContexts[threadID]->IASetIndexBuffer(res, DXGI_FORMAT_R32_UINT, 0);
|
||||
}
|
||||
}
|
||||
@@ -276,7 +276,7 @@ namespace wiGraphicsTypes
|
||||
virtual void BindStreamOutTarget(const GPUBuffer* buffer, GRAPHICSTHREAD threadID = GRAPHICSTHREAD_IMMEDIATE) {
|
||||
if (deviceContexts[threadID] != nullptr) {
|
||||
UINT offsetSO[1] = { 0 };
|
||||
ID3D11Buffer* res = buffer ? buffer->resource_DX11 : nullptr;
|
||||
ID3D11Buffer* res = buffer ? buffer->resource_DX11[buffer->activeBuffer] : nullptr;
|
||||
deviceContexts[threadID]->SOSetTargets(1, &res, offsetSO);
|
||||
}
|
||||
}
|
||||
@@ -338,62 +338,26 @@ namespace wiGraphicsTypes
|
||||
}
|
||||
virtual void UpdateBuffer(GPUBuffer* buffer, const void* data, GRAPHICSTHREAD threadID = GRAPHICSTHREAD_IMMEDIATE, int dataSize = -1)
|
||||
{
|
||||
if (buffer != nullptr && buffer->resource_DX11 != nullptr && data != nullptr && deviceContexts[threadID] != nullptr) {
|
||||
static thread_local D3D11_BUFFER_DESC d3dDesc;
|
||||
buffer->resource_DX11->GetDesc(&d3dDesc);
|
||||
if (buffer != nullptr && buffer->resource_DX11[0] != nullptr && buffer->resource_DX11[1] != nullptr && data != nullptr
|
||||
&& deviceContexts[threadID] != nullptr)
|
||||
{
|
||||
assert(buffer->desc.Usage != USAGE_IMMUTABLE && "Cannot update IMMUTABLE GPUBuffer!");
|
||||
HRESULT hr;
|
||||
if (dataSize > (int)d3dDesc.ByteWidth) { //recreate the buffer if new datasize exceeds buffer size
|
||||
buffer->resource_DX11->Release();
|
||||
d3dDesc.ByteWidth = dataSize * 2;
|
||||
|
||||
BufferDesc desc;
|
||||
desc.ByteWidth = d3dDesc.ByteWidth;
|
||||
switch (d3dDesc.Usage)
|
||||
{
|
||||
case D3D11_USAGE_DEFAULT:
|
||||
desc.Usage = USAGE_DEFAULT;
|
||||
break;
|
||||
case D3D11_USAGE_IMMUTABLE:
|
||||
desc.Usage = USAGE_IMMUTABLE;
|
||||
break;
|
||||
case D3D11_USAGE_DYNAMIC:
|
||||
desc.Usage = USAGE_DYNAMIC;
|
||||
break;
|
||||
case D3D11_USAGE_STAGING:
|
||||
desc.Usage = USAGE_STAGING;
|
||||
break;
|
||||
};
|
||||
desc.BindFlags = 0;
|
||||
{
|
||||
if (d3dDesc.BindFlags & D3D11_BIND_CONSTANT_BUFFER)
|
||||
desc.BindFlags |= BIND_CONSTANT_BUFFER;
|
||||
if (d3dDesc.BindFlags & D3D11_BIND_VERTEX_BUFFER)
|
||||
desc.BindFlags |= BIND_VERTEX_BUFFER;
|
||||
if (d3dDesc.BindFlags & D3D11_BIND_INDEX_BUFFER)
|
||||
desc.BindFlags |= BIND_INDEX_BUFFER;
|
||||
}
|
||||
desc.CPUAccessFlags = 0;
|
||||
{
|
||||
if (d3dDesc.CPUAccessFlags & D3D11_CPU_ACCESS_WRITE)
|
||||
desc.CPUAccessFlags |= CPU_ACCESS_WRITE;
|
||||
if (d3dDesc.CPUAccessFlags & D3D11_CPU_ACCESS_READ)
|
||||
desc.CPUAccessFlags |= CPU_ACCESS_READ;
|
||||
}
|
||||
desc.MiscFlags = 0;
|
||||
desc.StructureByteStride = d3dDesc.StructureByteStride;
|
||||
|
||||
hr = CreateBuffer(&desc, nullptr, buffer);
|
||||
if (dataSize > (int)buffer->desc.ByteWidth) { //recreate the buffer if new datasize exceeds buffer size
|
||||
buffer->resource_DX11[buffer->activeBuffer]->Release();
|
||||
buffer->desc.ByteWidth = dataSize * 2;
|
||||
hr = CreateBuffer(&buffer->desc, nullptr, buffer);
|
||||
}
|
||||
if (d3dDesc.Usage == D3D11_USAGE_DYNAMIC) {
|
||||
if (buffer->desc.Usage == USAGE_DYNAMIC) {
|
||||
static thread_local D3D11_MAPPED_SUBRESOURCE mappedResource;
|
||||
void* dataPtr;
|
||||
deviceContexts[threadID]->Map(buffer->resource_DX11, 0, D3D11_MAP_WRITE_DISCARD, 0, &mappedResource);
|
||||
deviceContexts[threadID]->Map(buffer->resource_DX11[buffer->activeBuffer], 0, D3D11_MAP_WRITE_DISCARD, 0, &mappedResource);
|
||||
dataPtr = (void*)mappedResource.pData;
|
||||
memcpy(dataPtr, data, (dataSize >= 0 ? dataSize : d3dDesc.ByteWidth));
|
||||
deviceContexts[threadID]->Unmap(buffer->resource_DX11, 0);
|
||||
memcpy(dataPtr, data, (dataSize >= 0 ? dataSize : buffer->desc.ByteWidth));
|
||||
deviceContexts[threadID]->Unmap(buffer->resource_DX11[buffer->activeBuffer], 0);
|
||||
}
|
||||
else {
|
||||
deviceContexts[threadID]->UpdateSubresource(buffer->resource_DX11, 0, nullptr, data, 0, 0);
|
||||
deviceContexts[threadID]->UpdateSubresource(buffer->resource_DX11[buffer->activeBuffer], 0, nullptr, data, 0, 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -92,7 +92,7 @@ void wiHairParticle::SetUpStatic(){
|
||||
LoadShaders();
|
||||
|
||||
|
||||
BufferDesc bd;
|
||||
GPUBufferDesc bd;
|
||||
ZeroMemory( &bd, sizeof(bd) );
|
||||
bd.Usage = USAGE_DYNAMIC;
|
||||
bd.ByteWidth = sizeof(ConstantBuffer);
|
||||
@@ -104,7 +104,7 @@ void wiHairParticle::SetUpStatic(){
|
||||
|
||||
|
||||
|
||||
RasterizerDesc rsd;
|
||||
RasterizerStateDesc rsd;
|
||||
rsd.FillMode=FILL_SOLID;
|
||||
rsd.CullMode=CULL_BACK;
|
||||
rsd.FrontCounterClockwise=true;
|
||||
@@ -132,7 +132,7 @@ void wiHairParticle::SetUpStatic(){
|
||||
wiRenderer::GetDevice()->CreateRasterizerState(&rsd,ncrs);
|
||||
|
||||
|
||||
DepthStencilDesc dsd;
|
||||
DepthStencilStateDesc dsd;
|
||||
dsd.DepthEnable = true;
|
||||
dsd.DepthWriteMask = DEPTH_WRITE_MASK_ALL;
|
||||
dsd.DepthFunc = COMPARISON_LESS;
|
||||
@@ -153,7 +153,7 @@ void wiHairParticle::SetUpStatic(){
|
||||
wiRenderer::GetDevice()->CreateDepthStencilState(&dsd, dss);
|
||||
|
||||
|
||||
BlendDesc bld;
|
||||
BlendStateDesc bld;
|
||||
ZeroMemory(&bld, sizeof(bld));
|
||||
bld.RenderTarget[0].BlendEnable=false;
|
||||
bld.RenderTarget[0].SrcBlend = BLEND_SRC_ALPHA;
|
||||
@@ -183,7 +183,7 @@ struct PatchHolder:public Cullable
|
||||
|
||||
void wiHairParticle::SetUpPatches()
|
||||
{
|
||||
BufferDesc bd;
|
||||
GPUBufferDesc bd;
|
||||
ZeroMemory( &bd, sizeof(bd) );
|
||||
bd.Usage = USAGE_DYNAMIC;
|
||||
bd.ByteWidth = sizeof(Point)*MAX_PARTICLES;
|
||||
|
||||
@@ -31,7 +31,7 @@ wiImage::wiImage()
|
||||
void wiImage::LoadBuffers()
|
||||
{
|
||||
|
||||
BufferDesc bd;
|
||||
GPUBufferDesc bd;
|
||||
ZeroMemory( &bd, sizeof(bd) );
|
||||
bd.Usage = USAGE_DYNAMIC;
|
||||
bd.ByteWidth = sizeof(ImageCB);
|
||||
@@ -79,7 +79,7 @@ void wiImage::LoadShaders()
|
||||
void wiImage::SetUpStates()
|
||||
{
|
||||
|
||||
RasterizerDesc rs;
|
||||
RasterizerStateDesc rs;
|
||||
rs.FillMode=FILL_SOLID;
|
||||
rs.CullMode=CULL_BACK;
|
||||
rs.FrontCounterClockwise=false;
|
||||
@@ -97,7 +97,7 @@ void wiImage::SetUpStates()
|
||||
|
||||
|
||||
|
||||
DepthStencilDesc dsd;
|
||||
DepthStencilStateDesc dsd;
|
||||
dsd.DepthEnable = false;
|
||||
dsd.DepthWriteMask = DEPTH_WRITE_MASK_ZERO;
|
||||
dsd.DepthFunc = COMPARISON_LESS;
|
||||
@@ -142,7 +142,7 @@ void wiImage::SetUpStates()
|
||||
wiRenderer::GetDevice()->CreateDepthStencilState(&dsd, depthNoStencilState);
|
||||
|
||||
|
||||
BlendDesc bd;
|
||||
BlendStateDesc bd;
|
||||
ZeroMemory(&bd, sizeof(bd));
|
||||
bd.RenderTarget[0].BlendEnable=true;
|
||||
bd.RenderTarget[0].SrcBlend = BLEND_SRC_ALPHA;
|
||||
|
||||
@@ -84,7 +84,7 @@ void wiLensFlare::LoadShaders(){
|
||||
}
|
||||
void wiLensFlare::SetUpCB()
|
||||
{
|
||||
BufferDesc bd;
|
||||
GPUBufferDesc bd;
|
||||
ZeroMemory( &bd, sizeof(bd) );
|
||||
bd.Usage = USAGE_DYNAMIC;
|
||||
bd.ByteWidth = sizeof(ConstantBuffer);
|
||||
@@ -96,7 +96,7 @@ void wiLensFlare::SetUpCB()
|
||||
}
|
||||
void wiLensFlare::SetUpStates()
|
||||
{
|
||||
RasterizerDesc rs;
|
||||
RasterizerStateDesc rs;
|
||||
rs.FillMode=FILL_SOLID;
|
||||
rs.CullMode=CULL_NONE;
|
||||
rs.FrontCounterClockwise=true;
|
||||
@@ -114,7 +114,7 @@ void wiLensFlare::SetUpStates()
|
||||
|
||||
|
||||
|
||||
DepthStencilDesc dsd;
|
||||
DepthStencilStateDesc dsd;
|
||||
dsd.DepthEnable = false;
|
||||
dsd.DepthWriteMask = DEPTH_WRITE_MASK_ZERO;
|
||||
dsd.DepthFunc = COMPARISON_LESS;
|
||||
@@ -141,7 +141,7 @@ void wiLensFlare::SetUpStates()
|
||||
|
||||
|
||||
|
||||
BlendDesc bd;
|
||||
BlendStateDesc bd;
|
||||
ZeroMemory(&bd, sizeof(bd));
|
||||
bd.RenderTarget[0].BlendEnable=true;
|
||||
bd.RenderTarget[0].SrcBlend = BLEND_ONE;
|
||||
|
||||
@@ -35,7 +35,7 @@ Lines::Lines(const XMFLOAT3& a, const XMFLOAT3& b, const XMFLOAT4& c)
|
||||
verts[0].pos = XMFLOAT3(a.x,a.y,a.z);
|
||||
verts[1].pos = XMFLOAT3(b.x,b.y,b.z);
|
||||
|
||||
BufferDesc bd;
|
||||
GPUBufferDesc bd;
|
||||
ZeroMemory( &bd, sizeof(bd) );
|
||||
bd.Usage = USAGE_DEFAULT;
|
||||
bd.ByteWidth = sizeof( Vertex ) * 2;
|
||||
@@ -68,7 +68,7 @@ void Lines::SetUpVertices()
|
||||
verts[0].pos = XMFLOAT3(0,0,0);
|
||||
verts[1].pos = XMFLOAT3(0,0,desc.length);
|
||||
|
||||
BufferDesc bd;
|
||||
GPUBufferDesc bd;
|
||||
ZeroMemory( &bd, sizeof(bd) );
|
||||
bd.Usage = USAGE_DEFAULT;
|
||||
bd.ByteWidth = sizeof( Vertex ) * 2;
|
||||
|
||||
@@ -480,7 +480,7 @@ void LoadWiObjects(const string& directory, const string& name, const string& id
|
||||
// if(objects[i]->mesh){
|
||||
// if(objects[i]->mesh->trailInfo.base>=0 && objects[i]->mesh->trailInfo.tip>=0){
|
||||
// //objects[i]->trail.resize(MAX_RIBBONTRAILS);
|
||||
// BufferDesc bd;
|
||||
// GPUBufferDesc bd;
|
||||
// ZeroMemory( &bd, sizeof(bd) );
|
||||
// bd.Usage = USAGE_DYNAMIC;
|
||||
// bd.ByteWidth = sizeof( RibbonVertex ) * 1000;
|
||||
@@ -946,7 +946,7 @@ void LoadWiLights(const string& directory, const string& name, const string& ide
|
||||
|
||||
//for(MeshCollection::iterator iter=lightGwiRenderer.begin(); iter!=lightGwiRenderer.end(); ++iter){
|
||||
// Mesh* iMesh = iter->second;
|
||||
// BufferDesc bd;
|
||||
// GPUBufferDesc bd;
|
||||
// ZeroMemory( &bd, sizeof(bd) );
|
||||
// bd.Usage = USAGE_DYNAMIC;
|
||||
// bd.ByteWidth = sizeof( Instance )*iMesh->usedBy.size();
|
||||
@@ -1674,7 +1674,7 @@ void Mesh::Optimize()
|
||||
void Mesh::CreateBuffers(Object* object) {
|
||||
if (!buffersComplete) {
|
||||
|
||||
BufferDesc bd;
|
||||
GPUBufferDesc bd;
|
||||
if (!meshInstanceBuffer.IsValid())
|
||||
{
|
||||
ZeroMemory(&bd, sizeof(bd));
|
||||
@@ -1926,7 +1926,7 @@ void Model::LoadFromDisk(const string& dir, const string& name, const string& id
|
||||
{
|
||||
// Ribbon trails
|
||||
if (x->mesh->trailInfo.base >= 0 && x->mesh->trailInfo.tip >= 0) {
|
||||
BufferDesc bd;
|
||||
GPUBufferDesc bd;
|
||||
ZeroMemory(&bd, sizeof(bd));
|
||||
bd.Usage = USAGE_DYNAMIC;
|
||||
bd.ByteWidth = sizeof(RibbonVertex) * 1000;
|
||||
@@ -2162,7 +2162,7 @@ void HitSphere::SetUpStatic()
|
||||
verts.push_back(XMFLOAT3A(XMFLOAT3A(0,0,0)));
|
||||
}
|
||||
|
||||
BufferDesc bd;
|
||||
GPUBufferDesc bd;
|
||||
ZeroMemory( &bd, sizeof(bd) );
|
||||
bd.Usage = USAGE_IMMUTABLE;
|
||||
bd.ByteWidth = sizeof( XMFLOAT3A )*verts.size();
|
||||
|
||||
@@ -41,7 +41,7 @@ public:
|
||||
//void Restore();
|
||||
|
||||
wiGraphicsTypes::Texture2D* GetTexture(int viewID = 0) const{ return (isCube ? renderTargets_Cube[viewID] : renderTargets[viewID]); }
|
||||
wiGraphicsTypes::Texture2DDesc GetDesc(int viewID = 0) const { assert(viewID < numViews); return GetTexture(viewID)->desc; }
|
||||
wiGraphicsTypes::Texture2DDesc GetDesc(int viewID = 0) const { assert(viewID < numViews); return GetTexture(viewID)->GetDesc(); }
|
||||
UINT GetMipCount();
|
||||
bool IsInitialized() { return (numViews > 0 || depth != nullptr); }
|
||||
};
|
||||
|
||||
@@ -494,7 +494,7 @@ void wiRenderer::LoadBuffers()
|
||||
constantBuffers[i] = new GPUBuffer;
|
||||
}
|
||||
|
||||
BufferDesc bd;
|
||||
GPUBufferDesc bd;
|
||||
ZeroMemory( &bd, sizeof(bd) );
|
||||
bd.Usage = USAGE_DYNAMIC;
|
||||
bd.BindFlags = BIND_CONSTANT_BUFFER;
|
||||
@@ -822,7 +822,7 @@ void wiRenderer::SetUpStates()
|
||||
rasterizers[i] = new RasterizerState;
|
||||
}
|
||||
|
||||
RasterizerDesc rs;
|
||||
RasterizerStateDesc rs;
|
||||
rs.FillMode=FILL_SOLID;
|
||||
rs.CullMode=CULL_BACK;
|
||||
rs.FrontCounterClockwise=true;
|
||||
@@ -913,7 +913,7 @@ void wiRenderer::SetUpStates()
|
||||
depthStencils[i] = new DepthStencilState;
|
||||
}
|
||||
|
||||
DepthStencilDesc dsd;
|
||||
DepthStencilStateDesc dsd;
|
||||
dsd.DepthEnable = true;
|
||||
dsd.DepthWriteMask = DEPTH_WRITE_MASK_ALL;
|
||||
dsd.DepthFunc = COMPARISON_LESS_EQUAL;
|
||||
@@ -981,7 +981,7 @@ void wiRenderer::SetUpStates()
|
||||
blendStates[i] = new BlendState;
|
||||
}
|
||||
|
||||
BlendDesc bd;
|
||||
BlendStateDesc bd;
|
||||
ZeroMemory(&bd, sizeof(bd));
|
||||
bd.RenderTarget[0].BlendEnable=false;
|
||||
bd.RenderTarget[0].SrcBlend = BLEND_SRC_ALPHA;
|
||||
|
||||
@@ -7,7 +7,7 @@ namespace wiVersion
|
||||
// minor features, major bug fixes
|
||||
const int minor = 7;
|
||||
// minor bug fixes, alterations, refactors
|
||||
const int revision = 0;
|
||||
const int revision = 1;
|
||||
|
||||
|
||||
long GetVersion()
|
||||
|
||||
Reference in New Issue
Block a user