diff --git a/Code/OysterGraphics/Definitions/GraphicalDefinition.h b/Code/OysterGraphics/Definitions/GraphicalDefinition.h index ae7bbeb8..41420cce 100644 --- a/Code/OysterGraphics/Definitions/GraphicalDefinition.h +++ b/Code/OysterGraphics/Definitions/GraphicalDefinition.h @@ -18,6 +18,8 @@ namespace Oyster { Math::Matrix WV; Math::Matrix WVP; + int Animated; + Math::Float3 Pad; }; struct FinalVertex @@ -52,8 +54,6 @@ namespace Oyster struct AnimationData { Math::Float4x4 AnimatedData[100]; - int Animated; - Math::Float3 Pad; }; struct GuiData diff --git a/Code/OysterGraphics/DllInterfaces/GFXAPI.cpp b/Code/OysterGraphics/DllInterfaces/GFXAPI.cpp index d7d30968..36b8653f 100644 --- a/Code/OysterGraphics/DllInterfaces/GFXAPI.cpp +++ b/Code/OysterGraphics/DllInterfaces/GFXAPI.cpp @@ -163,7 +163,17 @@ namespace Oyster void API::RenderGuiElement(API::Texture tex, Math::Float2 pos, Math::Float2 size) { - Render::Rendering::Gui::Render((ID3D11Texture2D*)tex,pos,size); + Render::Rendering::Gui::Render((ID3D11ShaderResourceView*)tex,pos,size); + } + + API::Texture API::CreateTexture(std::wstring filename) + { + return Core::loader.LoadResource((Core::texturePath + filename).c_str(),Oyster::Graphics::Loading::LoadTexture, Oyster::Graphics::Loading::UnloadTexture); + } + + void API::DeleteTexture(API::Texture tex) + { + Core::loader.ReleaseResource(tex); } } } \ No newline at end of file diff --git a/Code/OysterGraphics/DllInterfaces/GFXAPI.h b/Code/OysterGraphics/DllInterfaces/GFXAPI.h index 64a774d6..a6f5ac7d 100644 --- a/Code/OysterGraphics/DllInterfaces/GFXAPI.h +++ b/Code/OysterGraphics/DllInterfaces/GFXAPI.h @@ -68,6 +68,7 @@ namespace Oyster static void DeleteModel(Oyster::Graphics::Model::Model* model); static Texture CreateTexture(std::wstring filename); + static void DeleteTexture(Texture); //! @brief adds a light to the scene static void AddLight(Definitions::Pointlight light); diff --git a/Code/OysterGraphics/Render/Rendering/BasicRender.cpp b/Code/OysterGraphics/Render/Rendering/BasicRender.cpp index 3058a25d..5e18419b 100644 --- a/Code/OysterGraphics/Render/Rendering/BasicRender.cpp +++ b/Code/OysterGraphics/Render/Rendering/BasicRender.cpp @@ -72,12 +72,7 @@ namespace Oyster pm.WV = View * models[i].WorldMatrix; pm.WVP = Projection * pm.WV; - void* data = Resources::Deffered::ModelData.Map(); - memcpy(data,&(pm),sizeof(pm)); - Resources::Deffered::ModelData.Unmap(); - - Model::ModelInfo* info = (Model::ModelInfo*)models[i].info; - + Model::ModelInfo* info = models[i].info; Definitions::AnimationData am; //final if(info->Animated && models[i].AnimationPlaying != -1) @@ -105,12 +100,7 @@ namespace Oyster cube2->WorldMatrix = Scale; cube2->WorldMatrix.v[3] = info->bones[b].Absolute.v[3]; - //Basic::RenderScene(cube2,1, View, Projection); } - //BoneAnimated[8] = Math3D::RotationMatrix(3.14/4, Math::Float3(0, 0, 1)) * info->bones[8].Relative; - //BoneAnimated[31] = Math3D::RotationMatrix(3.14/4, Math::Float3(0, 0, 1)) * info->bones[31].Relative; - ////for each bone in animation - ////HACK use first bone int b = 0; Model::Animation A = info->Animations[models[i].AnimationPlaying]; while(models[i].AnimationTime>A.duration) @@ -160,27 +150,19 @@ namespace Oyster am.AnimatedData[b] = (BoneAbsAnimated[b] * SkinTransform[b]); } - //retore to draw animated model - Definitions::PerModel pm; - pm.WV = View * models[i].WorldMatrix; - pm.WVP = Projection * pm.WV; + + void *data = Resources::Deffered::AnimationData.Map(); + memcpy(data,&am,sizeof(Definitions::AnimationData)); + Resources::Deffered::AnimationData.Unmap(); - void* data = Resources::Deffered::ModelData.Map(); - memcpy(data,&(pm),sizeof(pm)); - Resources::Deffered::ModelData.Unmap(); - - //delete[]SkinTransform; - //delete[]BoneAbsAnimated; - //delete[]BoneAnimated; - - am.Animated = 1; + pm.Animated = 1; } else - am.Animated = 0; + pm.Animated = 0; - data = Resources::Deffered::AnimationData.Map(); - memcpy(data,&am,sizeof(Definitions::AnimationData)); - Resources::Deffered::AnimationData.Unmap(); + void* data = Resources::Deffered::ModelData.Map(); + memcpy(data,&(pm),sizeof(pm)); + Resources::Deffered::ModelData.Unmap(); if(info->Material.size()) { diff --git a/Code/OysterGraphics/Render/Rendering/GuiRender.cpp b/Code/OysterGraphics/Render/Rendering/GuiRender.cpp index 923f7123..f347daf2 100644 --- a/Code/OysterGraphics/Render/Rendering/GuiRender.cpp +++ b/Code/OysterGraphics/Render/Rendering/GuiRender.cpp @@ -1,4 +1,6 @@ #include "GuiRender.h" +#include "../Resources/Deffered.h" +#include "../../Definitions/GraphicalDefinition.h" namespace Oyster { @@ -12,31 +14,28 @@ namespace Oyster { } - void Gui::Render(ID3D11Texture2D* tex,Math::Float2 pos, Math::Float2 size) + void Gui::Render(ID3D11ShaderResourceView* tex,Math::Float2 pos, Math::Float2 size) { - //Oyster::Core::DeviceContext->PSSetShaderResources(0,1,&srv); + Core::deviceContext->PSSetShaderResources(0,1,&tex); - //Pos.x -= instance.sizeX/2; - //Pos.x += size.x/2; + pos *= 2; + pos -= 1; + pos.y *= -1; - //Pos.y -= instance.sizeY/2; - //Pos.y += size.y/2; + Definitions::GuiData gd; - //Matrix m; - //m = Math::Matrix::identity; - //float width = (1.0f/(instance.sizeX/2.0f)); - //float height = (1.0f/(instance.sizeY/2.0f)); - //m.m41=Pos.x * width; - //m.m42=-Pos.y * height; - //m.m43=Pos.z; - //m.m11=width*size.x/2; - //m.m22=height*size.y/2; - - //void* dest = Resources::Buffers::CBufferGs.Map(); - //memcpy(dest,&m.GetTranspose(),64); - //Resources::Buffers::CBufferGs.Unmap(); + gd.Translation = Math::Matrix::identity; + gd.Translation.m41 = pos.x; + gd.Translation.m42 = pos.y; + gd.Translation.m11 = size.x; + gd.Translation.m22 = size.y; - //Oyster::Core::DeviceContext->Draw(1,0); + + void* data = Render::Resources::Deffered::GuiData.Map(); + memcpy(data,&gd,sizeof(gd)); + Render::Resources::Deffered::GuiData.Unmap(); + + Core::deviceContext->Draw(1,0); } } } diff --git a/Code/OysterGraphics/Render/Rendering/GuiRender.h b/Code/OysterGraphics/Render/Rendering/GuiRender.h index 1d343f32..d7e25dd7 100644 --- a/Code/OysterGraphics/Render/Rendering/GuiRender.h +++ b/Code/OysterGraphics/Render/Rendering/GuiRender.h @@ -14,7 +14,7 @@ namespace Oyster { public: static void BeginRender(); - static void Render(ID3D11Texture2D* tex, Math::Float2 pos, Math::Float2 size); + static void Render(ID3D11ShaderResourceView* tex, Math::Float2 pos, Math::Float2 size); }; } } diff --git a/Code/OysterGraphics/Shader/Passes/Gather/Header.hlsli b/Code/OysterGraphics/Shader/Passes/Gather/Header.hlsli index 06583cd6..a313a649 100644 --- a/Code/OysterGraphics/Shader/Passes/Gather/Header.hlsli +++ b/Code/OysterGraphics/Shader/Passes/Gather/Header.hlsli @@ -33,12 +33,12 @@ SamplerState S1 : register(s0); cbuffer Animation : register(b0) { float4x4 AnimatedData[100]; - int Animated; - float3 Pad; } cbuffer PerModel : register(b1) { matrix WV; matrix WVP; + int Animated; + float3 Pad; } \ No newline at end of file