D3D11_SAMPLER_DESC samplerDesc;
ZeroMemory(&samplerDesc, sizeof(samplerDesc));
- samplerDesc.Filter = D3D11_FILTER_MIN_MAG_MIP_LINEAR;
+// samplerDesc.Filter = D3D11_FILTER_MIN_MAG_MIP_LINEAR;
+ samplerDesc.Filter = D3D11_FILTER_MIN_MAG_MIP_POINT;
+
samplerDesc.AddressU = D3D11_TEXTURE_ADDRESS_CLAMP;
samplerDesc.AddressV = D3D11_TEXTURE_ADDRESS_CLAMP;
samplerDesc.AddressW = D3D11_TEXTURE_ADDRESS_CLAMP;
{
D3D11_INPUT_ELEMENT_DESC layoutDesc[] =
{
- { "TRANSFORM", 0, DXGI_FORMAT_R32G32_FLOAT, 0, 0, D3D11_INPUT_PER_INSTANCE_DATA, 1 },
- { "TRANSFORM", 1, DXGI_FORMAT_R32G32_FLOAT, 0, 8, D3D11_INPUT_PER_INSTANCE_DATA, 1 },
- { "TRANSFORM", 2, DXGI_FORMAT_R32_FLOAT, 0, 16, D3D11_INPUT_PER_INSTANCE_DATA, 1 },
- { "COLOR", 0, DXGI_FORMAT_R8G8B8A8_UNORM, 0, 20, D3D11_INPUT_PER_INSTANCE_DATA, 1 }
+ { "TRANSFORM", 0, DXGI_FORMAT_R32G32B32A32_FLOAT, 0, 0, D3D11_INPUT_PER_INSTANCE_DATA, 1 },
+ { "TRANSFORM", 1, DXGI_FORMAT_R32G32_FLOAT, 0, 16, D3D11_INPUT_PER_INSTANCE_DATA, 1 },
+ { "TRANSFORM", 2, DXGI_FORMAT_R32_FLOAT, 0, 24, D3D11_INPUT_PER_INSTANCE_DATA, 1 },
+ { "COLOR", 0, DXGI_FORMAT_R8G8B8A8_UNORM, 0, 28, D3D11_INPUT_PER_INSTANCE_DATA, 1 }
};
loader->LoadShader(
"BasicSprites.GeometryShader.vs.cso",
{
D3D11_INPUT_ELEMENT_DESC layoutDesc[] =
{
- { "POSITION", 0, DXGI_FORMAT_R32G32_FLOAT, 0, 0, D3D11_INPUT_PER_VERTEX_DATA, 0 },
- { "TEXCOORD", 0, DXGI_FORMAT_R32G32_FLOAT, 0, 8, D3D11_INPUT_PER_VERTEX_DATA, 0 },
- { "TRANSFORM", 0, DXGI_FORMAT_R32G32_FLOAT, 1, 0, D3D11_INPUT_PER_INSTANCE_DATA, 1 },
- { "TRANSFORM", 1, DXGI_FORMAT_R32G32_FLOAT, 1, 8, D3D11_INPUT_PER_INSTANCE_DATA, 1 },
- { "TRANSFORM", 2, DXGI_FORMAT_R32_FLOAT, 1, 16, D3D11_INPUT_PER_INSTANCE_DATA, 1 },
- { "COLOR", 0, DXGI_FORMAT_R8G8B8A8_UNORM, 1, 20, D3D11_INPUT_PER_INSTANCE_DATA, 1 }
+ { "POSITION", 0, DXGI_FORMAT_R32G32B32A32_FLOAT, 0, 0, D3D11_INPUT_PER_VERTEX_DATA, 0 },
+ { "TEXCOORD", 0, DXGI_FORMAT_R32G32_FLOAT, 0, 16, D3D11_INPUT_PER_VERTEX_DATA, 0 },
+ { "TRANSFORM", 0, DXGI_FORMAT_R32G32B32A32_FLOAT, 1, 0, D3D11_INPUT_PER_INSTANCE_DATA, 1 },
+ { "TRANSFORM", 1, DXGI_FORMAT_R32G32_FLOAT, 1, 16, D3D11_INPUT_PER_INSTANCE_DATA, 1 },
+ { "TRANSFORM", 2, DXGI_FORMAT_R32_FLOAT, 1, 24, D3D11_INPUT_PER_INSTANCE_DATA, 1 },
+ { "COLOR", 0, DXGI_FORMAT_R8G8B8A8_UNORM, 1, 28, D3D11_INPUT_PER_INSTANCE_DATA, 1 }
};
loader->LoadShader(
"BasicSprites.Instancing.vs.cso",
{
D3D11_INPUT_ELEMENT_DESC layoutDesc[] =
{
- { "POSITIONT", 0, DXGI_FORMAT_R32G32_FLOAT, 0, 0, D3D11_INPUT_PER_VERTEX_DATA, 0 },
- { "TEXCOORD", 0, DXGI_FORMAT_R32G32_FLOAT, 0, 8, D3D11_INPUT_PER_VERTEX_DATA, 0 },
- { "COLOR", 0, DXGI_FORMAT_R8G8B8A8_UNORM, 0, 16, D3D11_INPUT_PER_VERTEX_DATA, 0 }
+ { "POSITIONT", 0, DXGI_FORMAT_R32G32B32A32_FLOAT, 0, 0, D3D11_INPUT_PER_VERTEX_DATA, 0 },
+ { "TEXCOORD", 0, DXGI_FORMAT_R32G32_FLOAT, 0, 16, D3D11_INPUT_PER_VERTEX_DATA, 0 },
+ { "COLOR", 0, DXGI_FORMAT_R8G8B8A8_UNORM, 0, 24, D3D11_INPUT_PER_VERTEX_DATA, 0 }
};
loader->LoadShader(
"BasicSprites.Replication.vs.cso",
InstancingVertex vertexBufferData[] =
{
- { float2(-1.0f, 1.0f), float2(0.0f, 0.0f) },
- { float2( 1.0f, 1.0f), float2(1.0f, 0.0f) },
- { float2(-1.0f, -1.0f), float2(0.0f, 1.0f) },
- { float2( 1.0f, -1.0f), float2(1.0f, 1.0f) }
+ { float4(-1.0f, 1.0f , 0.0f , 0.0f), float2(0.0f, 0.0f) },
+ { float4( 1.0f, 1.0f , 0.0f , 0.0f), float2(1.0f, 0.0f) },
+ { float4(-1.0f, -1.0f , 0.0f , 0.0f), float2(0.0f, 1.0f) },
+ { float4( 1.0f, -1.0f , 0.0f , 0.0f), float2(1.0f, 1.0f) }
};
D3D11_SUBRESOURCE_DATA vertexInitialData;
r;
}
-float2 SpriteBatch::StandardOrigin(float2 position, PositionUnits positionUnits, float2 renderTargetSize, float dpi)
+float4 SpriteBatch::StandardOrigin(float4 position, PositionUnits positionUnits, float2 renderTargetSize, float dpi)
{
- float2 origin;
+ float4 origin;
+
+ origin.z = position.z;
+ origin.w = position.w;
+
if (positionUnits == PositionUnits::Pixels)
{
origin.x = (position.x / renderTargetSize.x) * 2.0f - 1.0f;
void SpriteBatch::Draw(
_In_ ID3D11Texture2D* texture,
- _In_ float2 position,
+ _In_ float4 position,
_In_ PositionUnits positionUnits = PositionUnits::DIPs
)
{
void SpriteBatch::Draw(
_In_ ID3D11Texture2D* texture,
- _In_ float2 position,
+ _In_ float4 position,
_In_ PositionUnits positionUnits,
_In_ float2 size,
_In_ SizeUnits sizeUnits
void SpriteBatch::Draw(
_In_ ID3D11Texture2D* texture,
- _In_ float2 position,
+ _In_ float4 position,
_In_ PositionUnits positionUnits,
_In_ float2 size,
_In_ SizeUnits sizeUnits,
void SpriteBatch::Draw(
_In_ ID3D11Texture2D* texture,
- _In_ float2 position,
+ _In_ float4 position,
_In_ PositionUnits positionUnits,
_In_ float2 size,
_In_ SizeUnits sizeUnits,
void SpriteBatch::Draw(
_In_ ID3D11Texture2D* texture,
- _In_ float2 position,
+ _In_ float4 position,
_In_ PositionUnits positionUnits,
_In_ float2 size,
_In_ SizeUnits sizeUnits,
// Add the sprite to the buffer.
- float2 origin = StandardOrigin(position, positionUnits, m_renderTargetSize, m_dpi);
+ float4 origin = StandardOrigin(position, positionUnits, m_renderTargetSize, m_dpi);
float2 offset = StandardOffset(size, sizeUnits, textureSize, m_dpi);
if (m_technique == RenderTechnique::GeometryShader || m_technique == RenderTechnique::Instancing)
ReplicationVertex* singleSpriteVertices = &m_vertexData[m_numSpritesDrawn * 4];
unsigned int colorUnorm = MakeUnorm(color);
- singleSpriteVertices[0].pos = origin + offsets[0];
- singleSpriteVertices[1].pos = origin + offsets[1];
- singleSpriteVertices[2].pos = origin + offsets[2];
- singleSpriteVertices[3].pos = origin + offsets[3];
+ singleSpriteVertices[0].pos = float4(origin.x + offsets[0].x,origin.y + offsets[0].y,origin.z,origin.w);
+ singleSpriteVertices[1].pos = float4(origin.x + offsets[1].x,origin.y + offsets[1].y,origin.z,origin.w);
+ singleSpriteVertices[2].pos = float4(origin.x + offsets[2].x,origin.y + offsets[2].y,origin.z,origin.w);
+ singleSpriteVertices[3].pos = float4(origin.x + offsets[3].x,origin.y + offsets[3].y,origin.z,origin.w);
singleSpriteVertices[0].color = colorUnorm;
singleSpriteVertices[1].color = colorUnorm;
singleSpriteVertices[2].color = colorUnorm;
m_d3dContext->OMSetRenderTargets(
1,
backBufferRenderTargetView_.GetAddressOf(),
- nullptr
+ backBufferDepthStencilView_.Get()
);
m_d3dContext->RSSetViewports(1, &backBufferViewPort_);
reinterpret_cast<float*>(&D2D1::ColorF(D2D1::ColorF::Black))
);
+ m_d3dContext->ClearDepthStencilView(backBufferDepthStencilView_.Get(),D3D11_CLEAR_DEPTH | D3D11_CLEAR_STENCIL,1.0f,0);
+
spriteBatch_->Begin();
spriteBatch_->Draw(
test_.Get(),
- float2(0.5f, 0.5f),
- PositionUnits::Normalized,
+ float4(160.0f, 120.0f,0.2f,1.0f),
+ PositionUnits::Pixels,
+ float2(1.0f, 1.0f),
+ SizeUnits::Normalized,
+ float4(1.0f, 1.0f, 1.0f, 1.0f),
+ 0.0f
+ );
+
+ spriteBatch_->Draw(
+ test_.Get(),
+ float4(168.0f, 128.0f,0.5f,1.0f),
+ PositionUnits::Pixels,
float2(1.0f, 1.0f),
SizeUnits::Normalized,
float4(1.0f, 1.0f, 1.0f, 1.0f),
m_d3dContext->OMSetRenderTargets(
1,
m_renderTargetView.GetAddressOf(),
- nullptr
+ m_depthStencilView.Get()
);
m_d3dContext->RSSetViewports(1, &swapChainViewPort_);
m_renderTargetView.Get(),
reinterpret_cast<float*>(&D2D1::ColorF(D2D1::ColorF::MidnightBlue))
);
+
+ m_d3dContext->ClearDepthStencilView(m_depthStencilView.Get(),D3D11_CLEAR_DEPTH | D3D11_CLEAR_STENCIL,1.0f,0);
+
spriteBatch_->Begin();
- spriteBatch_->Draw(
- backBuffer_.Get(),
- float2(m_window->Bounds.Width / 2.0f,m_window->Bounds.Height / 2.0f),
- PositionUnits::DIPs,
- float2(1.0f, 1.0f) * scale_,
- SizeUnits::Normalized,
- float4(1.0f, 1.0f, 1.0f, 1.0f),
- 0.0f,
- BlendMode::Alpha
- );
+ spriteBatch_->Draw(
+ backBuffer_.Get(),
+ float4(m_window->Bounds.Width / 2.0f,m_window->Bounds.Height / 2.0f,0.5f,1.0f),
+ PositionUnits::DIPs,
+ float2(1.0f, 1.0f) * scale_,
+ SizeUnits::Normalized,
+ float4(1.0f, 1.0f, 1.0f, 1.0f),
+ 0.0f,
+ BlendMode::Alpha
+ );
spriteBatch_->End();