Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
GamebabyRockSun_QQ
GRSD3D12Sample
提交
6d1d7d30
G
GRSD3D12Sample
项目概览
GamebabyRockSun_QQ
/
GRSD3D12Sample
大约 1 年 前同步成功
通知
2
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
1
Wiki
分析
仓库
DevOps
项目成员
Pages
G
GRSD3D12Sample
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
1
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
6d1d7d30
编写于
6月 17, 2021
作者:
GamebabyRockSun_QQ
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
修复Texture_loader中的bug,具体见修正日志
上级
e7abbbf9
变更
7
展开全部
隐藏空白更改
内联
并排
Showing
7 changed file
with
1330 addition
and
1197 deletion
+1330
-1197
16-Assimp_Data_Display/16-Assimp_Data_Display.cpp
16-Assimp_Data_Display/16-Assimp_Data_Display.cpp
+1245
-1146
17-D3D12_Assimp_Animation/17-D3D12_Assimp_Animation.cpp
17-D3D12_Assimp_Animation/17-D3D12_Assimp_Animation.cpp
+48
-36
17-D3D12_Assimp_Animation/17-D3D12_Assimp_Animation.vcxproj
17-D3D12_Assimp_Animation/17-D3D12_Assimp_Animation.vcxproj
+5
-0
17-D3D12_Assimp_Animation/17-D3D12_Assimp_Animation.vcxproj.filters
...ssimp_Animation/17-D3D12_Assimp_Animation.vcxproj.filters
+8
-0
6-MultiThread/6-MultiThreadWithMsgWait.cpp
6-MultiThread/6-MultiThreadWithMsgWait.cpp
+4
-8
Commons/GRS_Texture_Loader.h
Commons/GRS_Texture_Loader.h
+6
-7
Revision.md
Revision.md
+14
-0
未找到文件。
16-Assimp_Data_Display/16-Assimp_Data_Display.cpp
浏览文件 @
6d1d7d30
此差异已折叠。
点击以展开。
17-D3D12_Assimp_Animation/17-D3D12_Assimp_Animation.cpp
浏览文件 @
6d1d7d30
...
...
@@ -83,25 +83,25 @@ int APIENTRY _tWinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR
HWND
hWnd
=
nullptr
;
MSG
msg
=
{};
const
UINT
nFrameBackBufCount
=
3u
;
UINT
nFrameIndex
=
0
;
DXGI_FORMAT
emRenderTargetFormat
=
DXGI_FORMAT_R8G8B8A8_UNORM
;
const
float
faClearColor
[]
=
{
0.0
f
,
0.2
f
,
0.4
f
,
1.0
f
};
const
UINT
nFrameBackBufCount
=
3u
;
UINT
nFrameIndex
=
0
;
DXGI_FORMAT
emRenderTargetFormat
=
DXGI_FORMAT_R8G8B8A8_UNORM
;
const
float
faClearColor
[]
=
{
0.17647
f
,
0.549
f
,
0.941176
f
,
1.0
f
};
UINT
nRTVDescriptorSize
=
0U
;
UINT
nSamplerDescriptorSize
=
0
;
UINT
nCBVSRVDescriptorSize
=
0
;
D3D12_VIEWPORT
stViewPort
=
{
0.0
f
,
0.0
f
,
static_cast
<
float
>
(
iWidth
),
static_cast
<
float
>
(
iHeight
),
D3D12_MIN_DEPTH
,
D3D12_MAX_DEPTH
};
D3D12_RECT
stScissorRect
=
{
0
,
0
,
static_cast
<
LONG
>
(
iWidth
),
static_cast
<
LONG
>
(
iHeight
)
};
D3D12_VIEWPORT
stViewPort
=
{
0.0
f
,
0.0
f
,
static_cast
<
float
>
(
iWidth
),
static_cast
<
float
>
(
iHeight
),
D3D12_MIN_DEPTH
,
D3D12_MAX_DEPTH
};
D3D12_RECT
stScissorRect
=
{
0
,
0
,
static_cast
<
LONG
>
(
iWidth
),
static_cast
<
LONG
>
(
iHeight
)
};
D3D_FEATURE_LEVEL
emFeatureLevel
=
D3D_FEATURE_LEVEL_12_1
;
ComPtr
<
IDXGIFactory5
>
pIDXGIFactory5
;
ComPtr
<
IDXGIFactory6
>
pIDXGIFactory6
;
ComPtr
<
IDXGIAdapter1
>
pIAdapter1
;
ComPtr
<
ID3D12Device4
>
pID3D12Device4
;
ComPtr
<
IDXGIFactory5
>
pIDXGIFactory5
;
ComPtr
<
IDXGIFactory6
>
pIDXGIFactory6
;
ComPtr
<
IDXGIAdapter1
>
pIAdapter1
;
ComPtr
<
ID3D12Device4
>
pID3D12Device4
;
ComPtr
<
ID3D12CommandQueue
>
pIMainCMDQueue
;
ComPtr
<
ID3D12CommandAllocator
>
pIMainCMDAlloc
;
...
...
@@ -111,11 +111,11 @@ int APIENTRY _tWinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR
ComPtr
<
ID3D12CommandAllocator
>
pICopyCMDAlloc
;
ComPtr
<
ID3D12GraphicsCommandList
>
pICopyCMDList
;
ComPtr
<
ID3D12Fence
>
pIFence
;
UINT64
n64FenceValue
=
0u
i64
;
HANDLE
hEventFence
=
nullptr
;
D3D12_RESOURCE_BARRIER
stBeginResBarrier
=
{};
D3D12_RESOURCE_BARRIER
stEneResBarrier
=
{};
ComPtr
<
ID3D12Fence
>
pIFence
;
UINT64
n64FenceValue
=
0u
i64
;
HANDLE
hEventFence
=
nullptr
;
D3D12_RESOURCE_BARRIER
stBeginResBarrier
=
{};
D3D12_RESOURCE_BARRIER
stEneResBarrier
=
{};
ComPtr
<
IDXGISwapChain1
>
pISwapChain1
;
ComPtr
<
IDXGISwapChain3
>
pISwapChain3
;
...
...
@@ -124,22 +124,20 @@ int APIENTRY _tWinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR
ComPtr
<
ID3D12DescriptorHeap
>
pIDSVHeap
;
ComPtr
<
ID3D12Resource
>
pIDepthStencilBuffer
;
ComPtr
<
ID3DBlob
>
pIVSModel
;
ComPtr
<
ID3DBlob
>
pIPSModel
;
ComPtr
<
ID3D12RootSignature
>
pIRootSignature
;
ComPtr
<
ID3DBlob
>
pIVSModel
;
ComPtr
<
ID3DBlob
>
pIPSModel
;
ComPtr
<
ID3D12RootSignature
>
pIRootSignature
;
ComPtr
<
ID3D12PipelineState
>
pIPSOModel
;
ComPtr
<
ID3D12PipelineState
>
pIPSOWireFrame
;
ComPtr
<
ID3D12DescriptorHeap
>
pICBVSRVHeap
;
ComPtr
<
ID3D12DescriptorHeap
>
pISamplerHeap
;
ComPtr
<
ID3D12Heap
>
pIUploadHeapModel
;
ComPtr
<
ID3D12Heap
>
pIDefaultHeapModel
;
ComPtr
<
ID3D12Heap
>
pIUploadHeapModel
;
ComPtr
<
ID3D12Heap
>
pIDefaultHeapModel
;
ComPtr
<
ID3D12Heap
>
pIUploadHeapIndices
;
ComPtr
<
ID3D12Heap
>
pIDefaultHeapIndices
;
ComPtr
<
ID3D12Heap
>
pIUploadHeapIndices
;
ComPtr
<
ID3D12Heap
>
pIDefaultHeapIndices
;
ComPtr
<
ID3D12Resource
>
pIVBPositionsUp
;
ComPtr
<
ID3D12Resource
>
pIVBNormalsUp
;
...
...
@@ -163,13 +161,8 @@ int APIENTRY _tWinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR
ComPtr
<
ID3D12Resource
>
pICBMVP
;
ComPtr
<
ID3D12Resource
>
pICBBones
;
ST_GRS_CB_MVP
*
pstCBMVP
=
nullptr
;
ST_GRS_CB_BONES
*
pstBones
=
nullptr
;
ComPtr
<
IWICImagingFactory
>
pIWICFactory
;
ComPtr
<
IWICBitmapDecoder
>
pIWICDecoder
;
ComPtr
<
IWICBitmapFrameDecode
>
pIWICFrame
;
ComPtr
<
IWICBitmapSource
>
pIBMP
;
ST_GRS_CB_MVP
*
pstCBMVP
=
nullptr
;
ST_GRS_CB_BONES
*
pstBones
=
nullptr
;
CAtlArray
<
ComPtr
<
ID3D12Resource
>>
arTexture
;
CAtlArray
<
ComPtr
<
ID3D12Resource
>>
arTextureUp
;
...
...
@@ -1285,7 +1278,6 @@ int APIENTRY _tWinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR
stEneResBarrier
.
Transition
.
Subresource
=
D3D12_RESOURCE_BARRIER_ALL_SUBRESOURCES
;
}
DWORD
dwRet
=
0
;
BOOL
bExit
=
FALSE
;
D3D12_CPU_DESCRIPTOR_HANDLE
stRTVHandle
=
pIRTVHeap
->
GetCPUDescriptorHandleForHeapStart
();
...
...
@@ -1558,28 +1550,48 @@ LRESULT CALLBACK WndProc( HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam
}
XMVECTOR
vDelta
=
{
0.0
f
,
0.0
f
,
1.0
f
,
0.0
f
};
if
(
VK_UP
==
n16KeyCode
)
// Z-轴
if
(
VK_UP
==
n16KeyCode
||
'w'
==
n16KeyCode
||
'W'
==
n16KeyCode
)
{
g_v4EyePos
=
XMVectorAdd
(
g_v4EyePos
,
vDelta
);
g_v4LookAt
=
XMVectorAdd
(
g_v4LookAt
,
vDelta
);
}
if
(
VK_DOWN
==
n16KeyCode
)
if
(
VK_DOWN
==
n16KeyCode
||
's'
==
n16KeyCode
||
'S'
==
n16KeyCode
)
{
g_v4EyePos
=
XMVectorSubtract
(
g_v4EyePos
,
vDelta
);
g_v4LookAt
=
XMVectorSubtract
(
g_v4LookAt
,
vDelta
);
}
// X-轴
vDelta
=
{
1.0
f
,
0.0
f
,
0.0
f
,
0.0
f
};
if
(
VK_LEFT
==
n16KeyCode
)
if
(
VK_LEFT
==
n16KeyCode
||
'a'
==
n16KeyCode
||
'A'
==
n16KeyCode
)
{
g_v4EyePos
=
XMVectorAdd
(
g_v4EyePos
,
vDelta
);
g_v4LookAt
=
XMVectorAdd
(
g_v4LookAt
,
vDelta
);
}
if
(
VK_RIGHT
==
n16KeyCode
)
if
(
VK_RIGHT
==
n16KeyCode
||
'd'
==
n16KeyCode
||
'D'
==
n16KeyCode
)
{
g_v4EyePos
=
XMVectorSubtract
(
g_v4EyePos
,
vDelta
);
g_v4LookAt
=
XMVectorSubtract
(
g_v4LookAt
,
vDelta
);
}
// Y-轴
vDelta
=
{
0.0
f
,
1.0
f
,
0.0
f
,
0.0
f
};
if
(
VK_PRIOR
==
n16KeyCode
||
'r'
==
n16KeyCode
||
'R'
==
n16KeyCode
)
{
g_v4EyePos
=
XMVectorAdd
(
g_v4EyePos
,
vDelta
);
g_v4LookAt
=
XMVectorAdd
(
g_v4LookAt
,
vDelta
);
}
if
(
VK_NEXT
==
n16KeyCode
||
'f'
==
n16KeyCode
||
'F'
==
n16KeyCode
)
{
g_v4EyePos
=
XMVectorSubtract
(
g_v4EyePos
,
vDelta
);
g_v4LookAt
=
XMVectorSubtract
(
g_v4LookAt
,
vDelta
);
}
// 缩放
if
(
VK_ADD
==
n16KeyCode
||
VK_OEM_PLUS
==
n16KeyCode
)
{
g_fScaling
+=
1.0
f
;
...
...
17-D3D12_Assimp_Animation/17-D3D12_Assimp_Animation.vcxproj
浏览文件 @
6d1d7d30
...
...
@@ -162,6 +162,11 @@
<ClInclude
Include=
"..\Commons\GRS_Texture_Loader.h"
/>
<ClInclude
Include=
"..\Commons\GRS_WIC_Utility.h"
/>
</ItemGroup>
<ItemGroup>
<None
Include=
"Shader\simple_bones_animation_multitex.hlsl"
>
<FileType>
Document
</FileType>
</None>
</ItemGroup>
<Import
Project=
"$(VCTargetsPath)\Microsoft.Cpp.targets"
/>
<ImportGroup
Label=
"ExtensionTargets"
>
</ImportGroup>
...
...
17-D3D12_Assimp_Animation/17-D3D12_Assimp_Animation.vcxproj.filters
浏览文件 @
6d1d7d30
...
...
@@ -13,6 +13,9 @@
<UniqueIdentifier>
{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}
</UniqueIdentifier>
<Extensions>
rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms
</Extensions>
</Filter>
<Filter
Include=
"Shader"
>
<UniqueIdentifier>
{1a8435dd-5020-4b11-85fe-508e5932dc19}
</UniqueIdentifier>
</Filter>
</ItemGroup>
<ItemGroup>
<ClCompile
Include=
"17-D3D12_Assimp_Animation.cpp"
>
...
...
@@ -42,4 +45,9 @@
<Filter>
头文件
</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<None
Include=
"Shader\simple_bones_animation_multitex.hlsl"
>
<Filter>
Shader
</Filter>
</None>
</ItemGroup>
</Project>
\ No newline at end of file
6-MultiThread/6-MultiThreadWithMsgWait.cpp
浏览文件 @
6d1d7d30
...
...
@@ -1273,8 +1273,8 @@ UINT __stdcall RenderThread(void* pParam)
stIBV
.
Format
=
DXGI_FORMAT_R32_UINT
;
stIBV
.
SizeInBytes
=
nIndexCnt
*
sizeof
(
UINT
);
::
HeapFree
(
::
GetProcessHeap
(),
0
,
pstVertices
);
::
HeapFree
(
::
GetProcessHeap
(),
0
,
pnIndices
);
GRS_SAFE_FREE
(
pstVertices
);
GRS_SAFE_FREE
(
pnIndices
);
}
//4、创建常量缓冲
...
...
@@ -1643,12 +1643,8 @@ BOOL LoadMeshVertex(const CHAR*pszMeshFileName, UINT&nVertexCnt, ST_GRS_VERTEX*&
fin
.
get
(
input
);
fin
.
get
(
input
);
ppVertex
=
(
ST_GRS_VERTEX
*
)
HeapAlloc
(
::
GetProcessHeap
()
,
HEAP_ZERO_MEMORY
,
nVertexCnt
*
sizeof
(
ST_GRS_VERTEX
));
ppIndices
=
(
UINT
*
)
HeapAlloc
(
::
GetProcessHeap
()
,
HEAP_ZERO_MEMORY
,
nVertexCnt
*
sizeof
(
UINT
));
ppVertex
=
(
ST_GRS_VERTEX
*
)
GRS_CALLOC
(
nVertexCnt
*
sizeof
(
ST_GRS_VERTEX
));
ppIndices
=
(
UINT
*
)
GRS_CALLOC
(
nVertexCnt
*
sizeof
(
UINT
));
for
(
UINT
i
=
0
;
i
<
nVertexCnt
;
i
++
)
{
...
...
Commons/GRS_Texture_Loader.h
浏览文件 @
6d1d7d30
...
...
@@ -55,9 +55,9 @@ __inline BOOL LoadTextureFromMem( ID3D12GraphicsCommandList* pCMDList
,
IID_PPV_ARGS
(
&
pITexture
)
)
);
//获取需要的上传堆资源缓冲的大小,这个尺寸通常大于实际图片的尺寸
D3D12_RESOURCE_DESC
Desc
=
pITexture
->
GetDesc
();
D3D12_RESOURCE_DESC
stDest
Desc
=
pITexture
->
GetDesc
();
UINT64
n64UploadBufferSize
=
0
;
pID3D12Device
->
GetCopyableFootprints
(
&
Desc
,
0
,
1
,
0
,
nullptr
,
nullptr
,
nullptr
,
&
n64UploadBufferSize
);
pID3D12Device
->
GetCopyableFootprints
(
&
stDest
Desc
,
0
,
1
,
0
,
nullptr
,
nullptr
,
nullptr
,
&
n64UploadBufferSize
);
stTextureHeapProp
.
Type
=
D3D12_HEAP_TYPE_UPLOAD
;
...
...
@@ -85,15 +85,12 @@ __inline BOOL LoadTextureFromMem( ID3D12GraphicsCommandList* pCMDList
//获取向上传堆拷贝纹理数据的一些纹理转换尺寸信息
//对于复杂的DDS纹理这是非常必要的过程
UINT
nNumSubresources
=
1u
;
//我们只有一副图片,即子资源个数为1
UINT
nTextureRowNum
=
0u
;
UINT64
n64TextureRowSizes
=
0u
;
UINT64
n64RequiredSize
=
0u
;
D3D12_PLACED_SUBRESOURCE_FOOTPRINT
stTxtLayouts
=
{};
D3D12_RESOURCE_DESC
stDestDesc
=
pITexture
->
GetDesc
();
pID3D12Device
->
GetCopyableFootprints
(
&
stDestDesc
,
0
,
nNumSubresources
...
...
@@ -182,13 +179,15 @@ __inline BOOL LoadTextureFromFile(
UINT
nTextureH
=
0
;
UINT
nPicRowPitch
=
0
;
if
(
WICLoadImageFromFile
(
pszTextureFile
bRet
=
WICLoadImageFromFile
(
pszTextureFile
,
emTextureFormat
,
nTextureW
,
nTextureH
,
nPicRowPitch
,
pbImageData
,
szImageBufferSize
)
)
,
szImageBufferSize
);
if
(
bRet
)
{
bRet
=
LoadTextureFromMem
(
pCMDList
,
pbImageData
...
...
Revision.md
浏览文件 @
6d1d7d30
...
...
@@ -68,3 +68,17 @@ D3D12 ERROR: ID3D12CommandQueue::Present: Resource state (0x800: D3D12_RESOURCE_
2021-6-10
1、添加了Assimp导入3D模型,并运行3D骨骼动画的第17号示例;
2021-6-13
1、修正了GRS_Texture_Loader.h中用WIC库加载纹理的BUG,之前在WIC加载失败时,Load函数任然会返回TRUE,并且在判断是否需要图片格式兼容性转换时逻辑也是错的,现在改为首先判断能否直接加载,然后再判断是否可以做兼容性转换,然后再去转换加载。
2、添加并修正了简单的摄像机控制逻辑,这个目前还不是介绍的重点,所以没有做严格的控制。
2021-6-14
1、将17号例子中的背景色改成了天空蓝,看上去舒服一些;
2021-6-16
1、调整了16号例子中的输出格式,并且追加了显示metadata的代码;
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录