Commit 7402f027 authored by Administrator's avatar Administrator
Browse files

resolved multiple images in same section

parent c8ea3d98
......@@ -125,7 +125,7 @@ Box::Box(Graphics& gfx, StructVertex vertices[], Logger& logger)
//{ "Position",0,DXGI_FORMAT_R32G32B32_FLOAT,0,0,D3D11_INPUT_PER_VERTEX_DATA,0 },
{ "Position",0,DXGI_FORMAT_R32G32B32_FLOAT,0,0,D3D11_INPUT_PER_VERTEX_DATA,0 },
{ "TexCoord",0,DXGI_FORMAT_R32G32_FLOAT,0,12,D3D11_INPUT_PER_VERTEX_DATA,0 },
{ "ImageSlot",0,DXGI_FORMAT_R32_UINT ,0,20,D3D11_INPUT_PER_VERTEX_DATA,0 },
{ "ImageSlot",0,DXGI_FORMAT_R32_FLOAT ,0,20,D3D11_INPUT_PER_VERTEX_DATA,0 },
};
//AddBind(std::make_unique<InputLayout>(gfx, ied, pvsbc));
AddStaticBind(std::make_unique<InputLayout>(gfx, ied, pvsbc));
......
......@@ -8,11 +8,15 @@ Ground::Ground(Graphics & gfx, Logger & logger) noexcept
// Init 2 surfaces
Surface *yueyueSurface = new Surface();
yueyueSurface->LoadImageFromFile(gfx.getDevice(), gfx.getContext(), "resource\\img\\yueyue.jpg");
UINT yueyueSlot = yueyueSurface->GetCurrSlot();
float yueyueSlot = yueyueSurface->GetCurrSlot();
Surface *ethanSurface = new Surface();
ethanSurface->LoadImageFromFile(gfx.getDevice(), gfx.getContext(), "resource\\img\\Ethan.png");
UINT ethanSlot = ethanSurface->GetCurrSlot();
float ethanSlot = ethanSurface->GetCurrSlot();
Surface* ethanAndYueyueSurface = new Surface();
ethanAndYueyueSurface->LoadImageFromFile(gfx.getDevice(), gfx.getContext(), "resource\\img\\Ethan_and_yueyue.png");
float ethanAndYueyueSlot = ethanAndYueyueSurface->GetCurrSlot();
for (int i = 0; i < 2; i+=2 )
for (int j = 0; j < 2; j+= 2)
......@@ -52,13 +56,13 @@ Ground::Ground(Graphics & gfx, Logger & logger) noexcept
// top surface
// left top front
{ XMFLOAT3(-1.0f + i, 1.0f, 1.0f + j), XMFLOAT2(0.0f, 0.0f), yueyueSlot },
{ XMFLOAT3(-1.0f + i, 1.0f, 1.0f + j), XMFLOAT2(0.0f, 0.0f), ethanAndYueyueSlot },
// right top front
{ XMFLOAT3(1.0f + i, 1.0f, 1.0f + j), XMFLOAT2(1.0f, 0.0f), yueyueSlot },
{ XMFLOAT3(1.0f + i, 1.0f, 1.0f + j), XMFLOAT2(1.0f, 0.0f), ethanAndYueyueSlot },
// left top back
{ XMFLOAT3(-1.0f + i, 1.0f, -1.0f + j), XMFLOAT2(0.0f, 1.0f), yueyueSlot },
{ XMFLOAT3(-1.0f + i, 1.0f, -1.0f + j), XMFLOAT2(0.0f, 1.0f), ethanAndYueyueSlot },
// right top back
{ XMFLOAT3(1.0f + i, 1.0f, -1.0f + j), XMFLOAT2(1.0f, 1.0f), yueyueSlot },
{ XMFLOAT3(1.0f + i, 1.0f, -1.0f + j), XMFLOAT2(1.0f, 1.0f), ethanAndYueyueSlot },
// front surface
// right top front
......@@ -72,13 +76,13 @@ Ground::Ground(Graphics & gfx, Logger & logger) noexcept
// bottom surface
// left bottom back
{ XMFLOAT3(-1.0f + i, -1.0f, -1.0f + j), XMFLOAT2(0.0f, 0.0f), ethanSlot },
{ XMFLOAT3(-1.0f + i, -1.0f, -1.0f + j), XMFLOAT2(0.0f, 0.0f), ethanAndYueyueSlot },
// right bottom back
{ XMFLOAT3(1.0f + i, -1.0f, -1.0f + j), XMFLOAT2(1.0f, 0.0f), ethanSlot },
{ XMFLOAT3(1.0f + i, -1.0f, -1.0f + j), XMFLOAT2(1.0f, 0.0f), ethanAndYueyueSlot },
// left bottom front
{ XMFLOAT3(-1.0f + i, -1.0f, 1.0f + j), XMFLOAT2(0.0f, 1.0f), ethanSlot },
{ XMFLOAT3(-1.0f + i, -1.0f, 1.0f + j), XMFLOAT2(0.0f, 1.0f), ethanAndYueyueSlot },
// right bottom front
{ XMFLOAT3(1.0f + i, -1.0f, 1.0f + j), XMFLOAT2(1.0f, 1.0f), ethanSlot },
{ XMFLOAT3(1.0f + i, -1.0f, 1.0f + j), XMFLOAT2(1.0f, 1.0f), ethanAndYueyueSlot },
};
shapes.push_back(std::make_unique<Box>(gfx, vertices, logger));
......
......@@ -99,6 +99,15 @@
<ClCompile Include="DrawableBase.cpp">
<Filter>Source Files\Drawables</Filter>
</ClCompile>
<ClCompile Include="Sampler.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="Surface.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="Texture.cpp">
<Filter>Source Files</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<FxCompile Include="PixelShader.hlsl">
......@@ -107,6 +116,12 @@
<FxCompile Include="VertexShader.hlsl">
<Filter>Shaders</Filter>
</FxCompile>
<FxCompile Include="TexturePS.hlsl">
<Filter>Shaders</Filter>
</FxCompile>
<FxCompile Include="TextureVS.hlsl">
<Filter>Shaders</Filter>
</FxCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="Timer.h">
......@@ -163,5 +178,14 @@
<ClInclude Include="DrawableBase.h">
<Filter>Header Files\Drawables</Filter>
</ClInclude>
<ClInclude Include="Sampler.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="Surface.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="Texture.h">
<Filter>Header Files</Filter>
</ClInclude>
</ItemGroup>
</Project>
\ No newline at end of file
......@@ -10,7 +10,7 @@ struct StructVertex
{
DirectX::XMFLOAT3 pos;
DirectX::XMFLOAT2 texCoord;
UINT slot;
float slot;
};
struct StructPixelConstBuf
......
Texture2D tex0 : register(t0);
Texture2D tex1 : register(t1);
Texture2D tex2 : register(t2);
struct PSInput
{
......@@ -11,13 +12,15 @@ SamplerState splr;
float4 main(PSInput input) : SV_Target
{
//return tex.Sample(splr,tc);
if (input.slot == 1.0f)
switch (input.slot)
{
case 0.0f:
return tex0.Sample(splr, input.tex);
case 1.0f:
return tex1.Sample(splr, input.tex);
}
else
{
case 2.0f:
return tex2.Sample(splr, input.tex);
default:
return tex0.Sample(splr, input.tex);
}
}
\ No newline at end of file
......@@ -771,7 +771,7 @@ int WINAPI WinMain(HINSTANCE hInstance,
auto cosValue = cos(seed / 5000);
// Set camera
DirectX::XMVECTOR eyePosition = DirectX::XMVectorSet(5.0f * sinValue, 2.0f, -5.0f * cosValue, 1.0f);
DirectX::XMVECTOR eyePosition = DirectX::XMVectorSet(5.0f * sinValue, 3.0f, -5.0f * cosValue, 1.0f);
DirectX::XMVECTOR focusPosition = DirectX::XMVectorZero();
DirectX::XMVECTOR upDirection = DirectX::XMVectorSet(0.0f, 1.0f, 0.0f, 1.0f);
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment