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) ...@@ -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 },
{ "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 }, { "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)); //AddBind(std::make_unique<InputLayout>(gfx, ied, pvsbc));
AddStaticBind(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 ...@@ -8,11 +8,15 @@ Ground::Ground(Graphics & gfx, Logger & logger) noexcept
// Init 2 surfaces // Init 2 surfaces
Surface *yueyueSurface = new Surface(); Surface *yueyueSurface = new Surface();
yueyueSurface->LoadImageFromFile(gfx.getDevice(), gfx.getContext(), "resource\\img\\yueyue.jpg"); yueyueSurface->LoadImageFromFile(gfx.getDevice(), gfx.getContext(), "resource\\img\\yueyue.jpg");
UINT yueyueSlot = yueyueSurface->GetCurrSlot(); float yueyueSlot = yueyueSurface->GetCurrSlot();
Surface *ethanSurface = new Surface(); Surface *ethanSurface = new Surface();
ethanSurface->LoadImageFromFile(gfx.getDevice(), gfx.getContext(), "resource\\img\\Ethan.png"); 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 i = 0; i < 2; i+=2 )
for (int j = 0; j < 2; j+= 2) for (int j = 0; j < 2; j+= 2)
...@@ -52,13 +56,13 @@ Ground::Ground(Graphics & gfx, Logger & logger) noexcept ...@@ -52,13 +56,13 @@ Ground::Ground(Graphics & gfx, Logger & logger) noexcept
// top surface // top surface
// left top front // 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 // 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 // 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 // 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 // front surface
// right top front // right top front
...@@ -72,13 +76,13 @@ Ground::Ground(Graphics & gfx, Logger & logger) noexcept ...@@ -72,13 +76,13 @@ Ground::Ground(Graphics & gfx, Logger & logger) noexcept
// bottom surface // bottom surface
// left bottom back // 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 // 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 // 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 // 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)); shapes.push_back(std::make_unique<Box>(gfx, vertices, logger));
......
...@@ -99,6 +99,15 @@ ...@@ -99,6 +99,15 @@
<ClCompile Include="DrawableBase.cpp"> <ClCompile Include="DrawableBase.cpp">
<Filter>Source Files\Drawables</Filter> <Filter>Source Files\Drawables</Filter>
</ClCompile> </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>
<ItemGroup> <ItemGroup>
<FxCompile Include="PixelShader.hlsl"> <FxCompile Include="PixelShader.hlsl">
...@@ -107,6 +116,12 @@ ...@@ -107,6 +116,12 @@
<FxCompile Include="VertexShader.hlsl"> <FxCompile Include="VertexShader.hlsl">
<Filter>Shaders</Filter> <Filter>Shaders</Filter>
</FxCompile> </FxCompile>
<FxCompile Include="TexturePS.hlsl">
<Filter>Shaders</Filter>
</FxCompile>
<FxCompile Include="TextureVS.hlsl">
<Filter>Shaders</Filter>
</FxCompile>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ClInclude Include="Timer.h"> <ClInclude Include="Timer.h">
...@@ -163,5 +178,14 @@ ...@@ -163,5 +178,14 @@
<ClInclude Include="DrawableBase.h"> <ClInclude Include="DrawableBase.h">
<Filter>Header Files\Drawables</Filter> <Filter>Header Files\Drawables</Filter>
</ClInclude> </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> </ItemGroup>
</Project> </Project>
\ No newline at end of file
...@@ -10,7 +10,7 @@ struct StructVertex ...@@ -10,7 +10,7 @@ struct StructVertex
{ {
DirectX::XMFLOAT3 pos; DirectX::XMFLOAT3 pos;
DirectX::XMFLOAT2 texCoord; DirectX::XMFLOAT2 texCoord;
UINT slot; float slot;
}; };
struct StructPixelConstBuf struct StructPixelConstBuf
......
Texture2D tex0 : register(t0); Texture2D tex0 : register(t0);
Texture2D tex1 : register(t1); Texture2D tex1 : register(t1);
Texture2D tex2 : register(t2);
struct PSInput struct PSInput
{ {
...@@ -11,13 +12,15 @@ SamplerState splr; ...@@ -11,13 +12,15 @@ SamplerState splr;
float4 main(PSInput input) : SV_Target float4 main(PSInput input) : SV_Target
{ {
//return tex.Sample(splr,tc); switch (input.slot)
if (input.slot == 1.0f)
{ {
case 0.0f:
return tex0.Sample(splr, input.tex);
case 1.0f:
return tex1.Sample(splr, input.tex); return tex1.Sample(splr, input.tex);
} case 2.0f:
else return tex2.Sample(splr, input.tex);
{ default:
return tex0.Sample(splr, input.tex); return tex0.Sample(splr, input.tex);
} }
} }
\ No newline at end of file
...@@ -771,7 +771,7 @@ int WINAPI WinMain(HINSTANCE hInstance, ...@@ -771,7 +771,7 @@ int WINAPI WinMain(HINSTANCE hInstance,
auto cosValue = cos(seed / 5000); auto cosValue = cos(seed / 5000);
// Set camera // 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 focusPosition = DirectX::XMVectorZero();
DirectX::XMVECTOR upDirection = DirectX::XMVectorSet(0.0f, 1.0f, 0.0f, 1.0f); 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