Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
GamebabyRockSun_QQ
GRSD3D12Sample
提交
0f023258
G
GRSD3D12Sample
项目概览
GamebabyRockSun_QQ
/
GRSD3D12Sample
9 个月 前同步成功
通知
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,体验更适合开发者的 AI 搜索 >>
提交
0f023258
编写于
6月 06, 2021
作者:
GamebabyRockSun_QQ
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
去除了示例8中所有的d3dx12.h的引用
上级
ab3e5cb4
变更
9
展开全部
隐藏空白更改
内联
并排
Showing
9 changed file
with
301 addition
and
181 deletion
+301
-181
1-D3D12Triangle/1-D3D12Trigger.cpp
1-D3D12Triangle/1-D3D12Trigger.cpp
+9
-9
2-D3D12WICTexture/2-D3D12WICTexture.cpp
2-D3D12WICTexture/2-D3D12WICTexture.cpp
+9
-9
3-PlacedTexture/3-D3D12PlacedTexture.cpp
3-PlacedTexture/3-D3D12PlacedTexture.cpp
+11
-11
4-D3D12TextureCube/4-D3D12TextureCube.cpp
4-D3D12TextureCube/4-D3D12TextureCube.cpp
+11
-11
5-SkyBox/5-SkyBox.cpp
5-SkyBox/5-SkyBox.cpp
+9
-9
6-MultiThread/6-MultiThreadWithMsgWait.cpp
6-MultiThread/6-MultiThreadWithMsgWait.cpp
+9
-9
7-D3D12MultiAdapter/7-D3D12MultiAdapter.cpp
7-D3D12MultiAdapter/7-D3D12MultiAdapter.cpp
+9
-6
8-UIRenderBase/8-UIRenderBase.cpp
8-UIRenderBase/8-UIRenderBase.cpp
+232
-115
9-D3D12RenderToTexture/9-RenderToTexture.cpp
9-D3D12RenderToTexture/9-RenderToTexture.cpp
+2
-2
未找到文件。
1-D3D12Triangle/1-D3D12Trigger.cpp
浏览文件 @
0f023258
...
@@ -496,13 +496,13 @@ int APIENTRY _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR l
...
@@ -496,13 +496,13 @@ int APIENTRY _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR l
stBeginResBarrier
.
Transition
.
StateAfter
=
D3D12_RESOURCE_STATE_RENDER_TARGET
;
stBeginResBarrier
.
Transition
.
StateAfter
=
D3D12_RESOURCE_STATE_RENDER_TARGET
;
stBeginResBarrier
.
Transition
.
Subresource
=
D3D12_RESOURCE_BARRIER_ALL_SUBRESOURCES
;
stBeginResBarrier
.
Transition
.
Subresource
=
D3D12_RESOURCE_BARRIER_ALL_SUBRESOURCES
;
D3D12_RESOURCE_BARRIER
stEn
e
ResBarrier
=
{};
D3D12_RESOURCE_BARRIER
stEn
d
ResBarrier
=
{};
stEn
e
ResBarrier
.
Type
=
D3D12_RESOURCE_BARRIER_TYPE_TRANSITION
;
stEn
d
ResBarrier
.
Type
=
D3D12_RESOURCE_BARRIER_TYPE_TRANSITION
;
stEn
e
ResBarrier
.
Flags
=
D3D12_RESOURCE_BARRIER_FLAG_NONE
;
stEn
d
ResBarrier
.
Flags
=
D3D12_RESOURCE_BARRIER_FLAG_NONE
;
stEn
e
ResBarrier
.
Transition
.
pResource
=
pIARenderTargets
[
nFrameIndex
].
Get
();
stEn
d
ResBarrier
.
Transition
.
pResource
=
pIARenderTargets
[
nFrameIndex
].
Get
();
stEn
e
ResBarrier
.
Transition
.
StateBefore
=
D3D12_RESOURCE_STATE_RENDER_TARGET
;
stEn
d
ResBarrier
.
Transition
.
StateBefore
=
D3D12_RESOURCE_STATE_RENDER_TARGET
;
stEn
e
ResBarrier
.
Transition
.
StateAfter
=
D3D12_RESOURCE_STATE_PRESENT
;
stEn
d
ResBarrier
.
Transition
.
StateAfter
=
D3D12_RESOURCE_STATE_PRESENT
;
stEn
e
ResBarrier
.
Transition
.
Subresource
=
D3D12_RESOURCE_BARRIER_ALL_SUBRESOURCES
;
stEn
d
ResBarrier
.
Transition
.
Subresource
=
D3D12_RESOURCE_BARRIER_ALL_SUBRESOURCES
;
D3D12_CPU_DESCRIPTOR_HANDLE
stRTVHandle
=
pIRTVHeap
->
GetCPUDescriptorHandleForHeapStart
();
D3D12_CPU_DESCRIPTOR_HANDLE
stRTVHandle
=
pIRTVHeap
->
GetCPUDescriptorHandleForHeapStart
();
DWORD
dwRet
=
0
;
DWORD
dwRet
=
0
;
...
@@ -552,8 +552,8 @@ int APIENTRY _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR l
...
@@ -552,8 +552,8 @@ int APIENTRY _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR l
pICMDList
->
DrawInstanced
(
3
,
1
,
0
,
0
);
pICMDList
->
DrawInstanced
(
3
,
1
,
0
,
0
);
//又一个资源屏障,用于确定渲染已经结束可以提交画面去显示了
//又一个资源屏障,用于确定渲染已经结束可以提交画面去显示了
stEn
e
ResBarrier
.
Transition
.
pResource
=
pIARenderTargets
[
nFrameIndex
].
Get
();
stEn
d
ResBarrier
.
Transition
.
pResource
=
pIARenderTargets
[
nFrameIndex
].
Get
();
pICMDList
->
ResourceBarrier
(
1
,
&
stEn
e
ResBarrier
);
pICMDList
->
ResourceBarrier
(
1
,
&
stEn
d
ResBarrier
);
//关闭命令列表,可以去执行了
//关闭命令列表,可以去执行了
GRS_THROW_IF_FAILED
(
pICMDList
->
Close
());
GRS_THROW_IF_FAILED
(
pICMDList
->
Close
());
...
...
2-D3D12WICTexture/2-D3D12WICTexture.cpp
浏览文件 @
0f023258
...
@@ -932,13 +932,13 @@ int APIENTRY _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR l
...
@@ -932,13 +932,13 @@ int APIENTRY _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR l
stBeginResBarrier
.
Transition
.
StateAfter
=
D3D12_RESOURCE_STATE_RENDER_TARGET
;
stBeginResBarrier
.
Transition
.
StateAfter
=
D3D12_RESOURCE_STATE_RENDER_TARGET
;
stBeginResBarrier
.
Transition
.
Subresource
=
D3D12_RESOURCE_BARRIER_ALL_SUBRESOURCES
;
stBeginResBarrier
.
Transition
.
Subresource
=
D3D12_RESOURCE_BARRIER_ALL_SUBRESOURCES
;
D3D12_RESOURCE_BARRIER
stEn
e
ResBarrier
=
{};
D3D12_RESOURCE_BARRIER
stEn
d
ResBarrier
=
{};
stEn
e
ResBarrier
.
Type
=
D3D12_RESOURCE_BARRIER_TYPE_TRANSITION
;
stEn
d
ResBarrier
.
Type
=
D3D12_RESOURCE_BARRIER_TYPE_TRANSITION
;
stEn
e
ResBarrier
.
Flags
=
D3D12_RESOURCE_BARRIER_FLAG_NONE
;
stEn
d
ResBarrier
.
Flags
=
D3D12_RESOURCE_BARRIER_FLAG_NONE
;
stEn
e
ResBarrier
.
Transition
.
pResource
=
pIARenderTargets
[
nFrameIndex
].
Get
();
stEn
d
ResBarrier
.
Transition
.
pResource
=
pIARenderTargets
[
nFrameIndex
].
Get
();
stEn
e
ResBarrier
.
Transition
.
StateBefore
=
D3D12_RESOURCE_STATE_RENDER_TARGET
;
stEn
d
ResBarrier
.
Transition
.
StateBefore
=
D3D12_RESOURCE_STATE_RENDER_TARGET
;
stEn
e
ResBarrier
.
Transition
.
StateAfter
=
D3D12_RESOURCE_STATE_PRESENT
;
stEn
d
ResBarrier
.
Transition
.
StateAfter
=
D3D12_RESOURCE_STATE_PRESENT
;
stEn
e
ResBarrier
.
Transition
.
Subresource
=
D3D12_RESOURCE_BARRIER_ALL_SUBRESOURCES
;
stEn
d
ResBarrier
.
Transition
.
Subresource
=
D3D12_RESOURCE_BARRIER_ALL_SUBRESOURCES
;
D3D12_CPU_DESCRIPTOR_HANDLE
stRTVHandle
=
pIRTVHeap
->
GetCPUDescriptorHandleForHeapStart
();
D3D12_CPU_DESCRIPTOR_HANDLE
stRTVHandle
=
pIRTVHeap
->
GetCPUDescriptorHandleForHeapStart
();
DWORD
dwRet
=
0
;
DWORD
dwRet
=
0
;
...
@@ -990,8 +990,8 @@ int APIENTRY _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR l
...
@@ -990,8 +990,8 @@ int APIENTRY _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR l
pICMDList
->
DrawInstanced
(
nVertexCnt
,
1
,
0
,
0
);
pICMDList
->
DrawInstanced
(
nVertexCnt
,
1
,
0
,
0
);
//又一个资源屏障,用于确定渲染已经结束可以提交画面去显示了
//又一个资源屏障,用于确定渲染已经结束可以提交画面去显示了
stEn
e
ResBarrier
.
Transition
.
pResource
=
pIARenderTargets
[
nFrameIndex
].
Get
();
stEn
d
ResBarrier
.
Transition
.
pResource
=
pIARenderTargets
[
nFrameIndex
].
Get
();
pICMDList
->
ResourceBarrier
(
1
,
&
stEn
e
ResBarrier
);
pICMDList
->
ResourceBarrier
(
1
,
&
stEn
d
ResBarrier
);
//关闭命令列表,可以去执行了
//关闭命令列表,可以去执行了
GRS_THROW_IF_FAILED
(
pICMDList
->
Close
());
GRS_THROW_IF_FAILED
(
pICMDList
->
Close
());
...
...
3-PlacedTexture/3-D3D12PlacedTexture.cpp
浏览文件 @
0f023258
...
@@ -1059,7 +1059,7 @@ int APIENTRY _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR l
...
@@ -1059,7 +1059,7 @@ int APIENTRY _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR l
}
}
D3D12_RESOURCE_BARRIER
stBeginResBarrier
=
{};
D3D12_RESOURCE_BARRIER
stBeginResBarrier
=
{};
D3D12_RESOURCE_BARRIER
stEn
e
ResBarrier
=
{};
D3D12_RESOURCE_BARRIER
stEn
d
ResBarrier
=
{};
{
{
stBeginResBarrier
.
Type
=
D3D12_RESOURCE_BARRIER_TYPE_TRANSITION
;
stBeginResBarrier
.
Type
=
D3D12_RESOURCE_BARRIER_TYPE_TRANSITION
;
...
@@ -1070,12 +1070,12 @@ int APIENTRY _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR l
...
@@ -1070,12 +1070,12 @@ int APIENTRY _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR l
stBeginResBarrier
.
Transition
.
Subresource
=
D3D12_RESOURCE_BARRIER_ALL_SUBRESOURCES
;
stBeginResBarrier
.
Transition
.
Subresource
=
D3D12_RESOURCE_BARRIER_ALL_SUBRESOURCES
;
stEn
e
ResBarrier
.
Type
=
D3D12_RESOURCE_BARRIER_TYPE_TRANSITION
;
stEn
d
ResBarrier
.
Type
=
D3D12_RESOURCE_BARRIER_TYPE_TRANSITION
;
stEn
e
ResBarrier
.
Flags
=
D3D12_RESOURCE_BARRIER_FLAG_NONE
;
stEn
d
ResBarrier
.
Flags
=
D3D12_RESOURCE_BARRIER_FLAG_NONE
;
stEn
e
ResBarrier
.
Transition
.
pResource
=
pIARenderTargets
[
nFrameIndex
].
Get
();
stEn
d
ResBarrier
.
Transition
.
pResource
=
pIARenderTargets
[
nFrameIndex
].
Get
();
stEn
e
ResBarrier
.
Transition
.
StateBefore
=
D3D12_RESOURCE_STATE_RENDER_TARGET
;
stEn
d
ResBarrier
.
Transition
.
StateBefore
=
D3D12_RESOURCE_STATE_RENDER_TARGET
;
stEn
e
ResBarrier
.
Transition
.
StateAfter
=
D3D12_RESOURCE_STATE_PRESENT
;
stEn
d
ResBarrier
.
Transition
.
StateAfter
=
D3D12_RESOURCE_STATE_PRESENT
;
stEn
e
ResBarrier
.
Transition
.
Subresource
=
D3D12_RESOURCE_BARRIER_ALL_SUBRESOURCES
;
stEn
d
ResBarrier
.
Transition
.
Subresource
=
D3D12_RESOURCE_BARRIER_ALL_SUBRESOURCES
;
}
}
DWORD
dwRet
=
0
;
DWORD
dwRet
=
0
;
...
@@ -1126,8 +1126,8 @@ int APIENTRY _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR l
...
@@ -1126,8 +1126,8 @@ int APIENTRY _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR l
pICMDList
->
OMSetRenderTargets
(
1
,
&
stRTVHandle
,
FALSE
,
nullptr
);
pICMDList
->
OMSetRenderTargets
(
1
,
&
stRTVHandle
,
FALSE
,
nullptr
);
// 继续记录命令,并真正开始新一帧的渲染
// 继续记录命令,并真正开始新一帧的渲染
const
float
c
learColor
[]
=
{
0.0
f
,
0.2
f
,
0.4
f
,
1.0
f
};
const
float
arC
learColor
[]
=
{
0.0
f
,
0.2
f
,
0.4
f
,
1.0
f
};
pICMDList
->
ClearRenderTargetView
(
stRTVHandle
,
c
learColor
,
0
,
nullptr
);
pICMDList
->
ClearRenderTargetView
(
stRTVHandle
,
arC
learColor
,
0
,
nullptr
);
//注意我们使用的渲染手法是三角形带,这是最快的绘制矩形的方式,也是很多UI库中核心使用的方法
//注意我们使用的渲染手法是三角形带,这是最快的绘制矩形的方式,也是很多UI库中核心使用的方法
pICMDList
->
IASetPrimitiveTopology
(
D3D_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP
);
pICMDList
->
IASetPrimitiveTopology
(
D3D_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP
);
pICMDList
->
IASetVertexBuffers
(
0
,
1
,
&
stVertexBufferView
);
pICMDList
->
IASetVertexBuffers
(
0
,
1
,
&
stVertexBufferView
);
...
@@ -1138,8 +1138,8 @@ int APIENTRY _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR l
...
@@ -1138,8 +1138,8 @@ int APIENTRY _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR l
//---------------------------------------------------------------------------------------------
//---------------------------------------------------------------------------------------------
//又一个资源屏障,用于确定渲染已经结束可以提交画面去显示了
//又一个资源屏障,用于确定渲染已经结束可以提交画面去显示了
stEn
e
ResBarrier
.
Transition
.
pResource
=
pIARenderTargets
[
nFrameIndex
].
Get
();
stEn
d
ResBarrier
.
Transition
.
pResource
=
pIARenderTargets
[
nFrameIndex
].
Get
();
pICMDList
->
ResourceBarrier
(
1
,
&
stEn
e
ResBarrier
);
pICMDList
->
ResourceBarrier
(
1
,
&
stEn
d
ResBarrier
);
//关闭命令列表,可以去执行了
//关闭命令列表,可以去执行了
GRS_THROW_IF_FAILED
(
pICMDList
->
Close
());
GRS_THROW_IF_FAILED
(
pICMDList
->
Close
());
...
...
4-D3D12TextureCube/4-D3D12TextureCube.cpp
浏览文件 @
0f023258
...
@@ -1201,7 +1201,7 @@ int APIENTRY _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR l
...
@@ -1201,7 +1201,7 @@ int APIENTRY _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR l
}
}
D3D12_RESOURCE_BARRIER
stBeginResBarrier
=
{};
D3D12_RESOURCE_BARRIER
stBeginResBarrier
=
{};
D3D12_RESOURCE_BARRIER
stEn
e
ResBarrier
=
{};
D3D12_RESOURCE_BARRIER
stEn
d
ResBarrier
=
{};
{
{
stBeginResBarrier
.
Type
=
D3D12_RESOURCE_BARRIER_TYPE_TRANSITION
;
stBeginResBarrier
.
Type
=
D3D12_RESOURCE_BARRIER_TYPE_TRANSITION
;
...
@@ -1212,12 +1212,12 @@ int APIENTRY _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR l
...
@@ -1212,12 +1212,12 @@ int APIENTRY _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR l
stBeginResBarrier
.
Transition
.
Subresource
=
D3D12_RESOURCE_BARRIER_ALL_SUBRESOURCES
;
stBeginResBarrier
.
Transition
.
Subresource
=
D3D12_RESOURCE_BARRIER_ALL_SUBRESOURCES
;
stEn
e
ResBarrier
.
Type
=
D3D12_RESOURCE_BARRIER_TYPE_TRANSITION
;
stEn
d
ResBarrier
.
Type
=
D3D12_RESOURCE_BARRIER_TYPE_TRANSITION
;
stEn
e
ResBarrier
.
Flags
=
D3D12_RESOURCE_BARRIER_FLAG_NONE
;
stEn
d
ResBarrier
.
Flags
=
D3D12_RESOURCE_BARRIER_FLAG_NONE
;
stEn
e
ResBarrier
.
Transition
.
pResource
=
pIARenderTargets
[
nFrameIndex
].
Get
();
stEn
d
ResBarrier
.
Transition
.
pResource
=
pIARenderTargets
[
nFrameIndex
].
Get
();
stEn
e
ResBarrier
.
Transition
.
StateBefore
=
D3D12_RESOURCE_STATE_RENDER_TARGET
;
stEn
d
ResBarrier
.
Transition
.
StateBefore
=
D3D12_RESOURCE_STATE_RENDER_TARGET
;
stEn
e
ResBarrier
.
Transition
.
StateAfter
=
D3D12_RESOURCE_STATE_PRESENT
;
stEn
d
ResBarrier
.
Transition
.
StateAfter
=
D3D12_RESOURCE_STATE_PRESENT
;
stEn
e
ResBarrier
.
Transition
.
Subresource
=
D3D12_RESOURCE_BARRIER_ALL_SUBRESOURCES
;
stEn
d
ResBarrier
.
Transition
.
Subresource
=
D3D12_RESOURCE_BARRIER_ALL_SUBRESOURCES
;
}
}
//25、记录帧开始时间,和当前时间,以循环结束为界
//25、记录帧开始时间,和当前时间,以循环结束为界
...
@@ -1293,8 +1293,8 @@ int APIENTRY _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR l
...
@@ -1293,8 +1293,8 @@ int APIENTRY _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR l
pICMDList
->
RSSetViewports
(
1
,
&
stViewPort
);
pICMDList
->
RSSetViewports
(
1
,
&
stViewPort
);
pICMDList
->
RSSetScissorRects
(
1
,
&
stScissorRect
);
pICMDList
->
RSSetScissorRects
(
1
,
&
stScissorRect
);
// 继续记录命令,并真正开始新一帧的渲染
// 继续记录命令,并真正开始新一帧的渲染
const
float
c
learColor
[]
=
{
0.0
f
,
0.2
f
,
0.4
f
,
1.0
f
};
const
float
arC
learColor
[]
=
{
0.0
f
,
0.2
f
,
0.4
f
,
1.0
f
};
pICMDList
->
ClearRenderTargetView
(
stRTVHandle
,
c
learColor
,
0
,
nullptr
);
pICMDList
->
ClearRenderTargetView
(
stRTVHandle
,
arC
learColor
,
0
,
nullptr
);
//---------------------------------------------------------------------------------------------
//---------------------------------------------------------------------------------------------
pICMDList
->
SetGraphicsRootSignature
(
pIRootSignature
.
Get
());
pICMDList
->
SetGraphicsRootSignature
(
pIRootSignature
.
Get
());
...
@@ -1327,8 +1327,8 @@ int APIENTRY _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR l
...
@@ -1327,8 +1327,8 @@ int APIENTRY _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR l
//---------------------------------------------------------------------------------------------
//---------------------------------------------------------------------------------------------
//又一个资源屏障,用于确定渲染已经结束可以提交画面去显示了
//又一个资源屏障,用于确定渲染已经结束可以提交画面去显示了
stEn
e
ResBarrier
.
Transition
.
pResource
=
pIARenderTargets
[
nFrameIndex
].
Get
();
stEn
d
ResBarrier
.
Transition
.
pResource
=
pIARenderTargets
[
nFrameIndex
].
Get
();
pICMDList
->
ResourceBarrier
(
1
,
&
stEn
e
ResBarrier
);
pICMDList
->
ResourceBarrier
(
1
,
&
stEn
d
ResBarrier
);
//关闭命令列表,可以去执行了
//关闭命令列表,可以去执行了
GRS_THROW_IF_FAILED
(
pICMDList
->
Close
());
GRS_THROW_IF_FAILED
(
pICMDList
->
Close
());
...
...
5-SkyBox/5-SkyBox.cpp
浏览文件 @
0f023258
...
@@ -1643,7 +1643,7 @@ int APIENTRY _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR l
...
@@ -1643,7 +1643,7 @@ int APIENTRY _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR l
}
}
D3D12_RESOURCE_BARRIER
stBeginResBarrier
=
{};
D3D12_RESOURCE_BARRIER
stBeginResBarrier
=
{};
D3D12_RESOURCE_BARRIER
stEn
e
ResBarrier
=
{};
D3D12_RESOURCE_BARRIER
stEn
d
ResBarrier
=
{};
{
{
stBeginResBarrier
.
Type
=
D3D12_RESOURCE_BARRIER_TYPE_TRANSITION
;
stBeginResBarrier
.
Type
=
D3D12_RESOURCE_BARRIER_TYPE_TRANSITION
;
stBeginResBarrier
.
Flags
=
D3D12_RESOURCE_BARRIER_FLAG_NONE
;
stBeginResBarrier
.
Flags
=
D3D12_RESOURCE_BARRIER_FLAG_NONE
;
...
@@ -1653,12 +1653,12 @@ int APIENTRY _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR l
...
@@ -1653,12 +1653,12 @@ int APIENTRY _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR l
stBeginResBarrier
.
Transition
.
Subresource
=
D3D12_RESOURCE_BARRIER_ALL_SUBRESOURCES
;
stBeginResBarrier
.
Transition
.
Subresource
=
D3D12_RESOURCE_BARRIER_ALL_SUBRESOURCES
;
stEn
e
ResBarrier
.
Type
=
D3D12_RESOURCE_BARRIER_TYPE_TRANSITION
;
stEn
d
ResBarrier
.
Type
=
D3D12_RESOURCE_BARRIER_TYPE_TRANSITION
;
stEn
e
ResBarrier
.
Flags
=
D3D12_RESOURCE_BARRIER_FLAG_NONE
;
stEn
d
ResBarrier
.
Flags
=
D3D12_RESOURCE_BARRIER_FLAG_NONE
;
stEn
e
ResBarrier
.
Transition
.
pResource
=
pIARenderTargets
[
nCurrentFrameIndex
].
Get
();
stEn
d
ResBarrier
.
Transition
.
pResource
=
pIARenderTargets
[
nCurrentFrameIndex
].
Get
();
stEn
e
ResBarrier
.
Transition
.
StateBefore
=
D3D12_RESOURCE_STATE_RENDER_TARGET
;
stEn
d
ResBarrier
.
Transition
.
StateBefore
=
D3D12_RESOURCE_STATE_RENDER_TARGET
;
stEn
e
ResBarrier
.
Transition
.
StateAfter
=
D3D12_RESOURCE_STATE_PRESENT
;
stEn
d
ResBarrier
.
Transition
.
StateAfter
=
D3D12_RESOURCE_STATE_PRESENT
;
stEn
e
ResBarrier
.
Transition
.
Subresource
=
D3D12_RESOURCE_BARRIER_ALL_SUBRESOURCES
;
stEn
d
ResBarrier
.
Transition
.
Subresource
=
D3D12_RESOURCE_BARRIER_ALL_SUBRESOURCES
;
}
}
// 记录帧开始时间,和当前时间,以循环结束为界
// 记录帧开始时间,和当前时间,以循环结束为界
...
@@ -1765,8 +1765,8 @@ int APIENTRY _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR l
...
@@ -1765,8 +1765,8 @@ int APIENTRY _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR l
//===============================================================================================
//===============================================================================================
//又一个资源屏障,用于确定渲染已经结束可以提交画面去显示了
//又一个资源屏障,用于确定渲染已经结束可以提交画面去显示了
stEn
e
ResBarrier
.
Transition
.
pResource
=
pIARenderTargets
[
nCurrentFrameIndex
].
Get
();
stEn
d
ResBarrier
.
Transition
.
pResource
=
pIARenderTargets
[
nCurrentFrameIndex
].
Get
();
pICmdListDirect
->
ResourceBarrier
(
1
,
&
stEn
e
ResBarrier
);
pICmdListDirect
->
ResourceBarrier
(
1
,
&
stEn
d
ResBarrier
);
//关闭命令列表,可以去执行了
//关闭命令列表,可以去执行了
GRS_THROW_IF_FAILED
(
pICmdListDirect
->
Close
());
GRS_THROW_IF_FAILED
(
pICmdListDirect
->
Close
());
...
...
6-MultiThread/6-MultiThreadWithMsgWait.cpp
浏览文件 @
0f023258
...
@@ -717,7 +717,7 @@ int APIENTRY _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR l
...
@@ -717,7 +717,7 @@ int APIENTRY _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR l
}
}
D3D12_RESOURCE_BARRIER
stBeginResBarrier
=
{};
D3D12_RESOURCE_BARRIER
stBeginResBarrier
=
{};
D3D12_RESOURCE_BARRIER
stEn
e
ResBarrier
=
{};
D3D12_RESOURCE_BARRIER
stEn
d
ResBarrier
=
{};
{
{
stBeginResBarrier
.
Type
=
D3D12_RESOURCE_BARRIER_TYPE_TRANSITION
;
stBeginResBarrier
.
Type
=
D3D12_RESOURCE_BARRIER_TYPE_TRANSITION
;
stBeginResBarrier
.
Flags
=
D3D12_RESOURCE_BARRIER_FLAG_NONE
;
stBeginResBarrier
.
Flags
=
D3D12_RESOURCE_BARRIER_FLAG_NONE
;
...
@@ -727,12 +727,12 @@ int APIENTRY _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR l
...
@@ -727,12 +727,12 @@ int APIENTRY _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR l
stBeginResBarrier
.
Transition
.
Subresource
=
D3D12_RESOURCE_BARRIER_ALL_SUBRESOURCES
;
stBeginResBarrier
.
Transition
.
Subresource
=
D3D12_RESOURCE_BARRIER_ALL_SUBRESOURCES
;
stEn
e
ResBarrier
.
Type
=
D3D12_RESOURCE_BARRIER_TYPE_TRANSITION
;
stEn
d
ResBarrier
.
Type
=
D3D12_RESOURCE_BARRIER_TYPE_TRANSITION
;
stEn
e
ResBarrier
.
Flags
=
D3D12_RESOURCE_BARRIER_FLAG_NONE
;
stEn
d
ResBarrier
.
Flags
=
D3D12_RESOURCE_BARRIER_FLAG_NONE
;
stEn
e
ResBarrier
.
Transition
.
pResource
=
g_pIARenderTargets
[
nCurrentFrameIndex
].
Get
();
stEn
d
ResBarrier
.
Transition
.
pResource
=
g_pIARenderTargets
[
nCurrentFrameIndex
].
Get
();
stEn
e
ResBarrier
.
Transition
.
StateBefore
=
D3D12_RESOURCE_STATE_RENDER_TARGET
;
stEn
d
ResBarrier
.
Transition
.
StateBefore
=
D3D12_RESOURCE_STATE_RENDER_TARGET
;
stEn
e
ResBarrier
.
Transition
.
StateAfter
=
D3D12_RESOURCE_STATE_PRESENT
;
stEn
d
ResBarrier
.
Transition
.
StateAfter
=
D3D12_RESOURCE_STATE_PRESENT
;
stEn
e
ResBarrier
.
Transition
.
Subresource
=
D3D12_RESOURCE_BARRIER_ALL_SUBRESOURCES
;
stEn
d
ResBarrier
.
Transition
.
Subresource
=
D3D12_RESOURCE_BARRIER_ALL_SUBRESOURCES
;
}
}
UINT
nStates
=
0
;
//初始状态为0
UINT
nStates
=
0
;
//初始状态为0
...
@@ -869,8 +869,8 @@ int APIENTRY _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR l
...
@@ -869,8 +869,8 @@ int APIENTRY _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR l
break
;
break
;
case
2
:
// 状态2 表示所有的渲染命令列表都记录完成了,开始后处理和执行命令列表
case
2
:
// 状态2 表示所有的渲染命令列表都记录完成了,开始后处理和执行命令列表
{
{
stEn
e
ResBarrier
.
Transition
.
pResource
=
g_pIARenderTargets
[
nCurrentFrameIndex
].
Get
();
stEn
d
ResBarrier
.
Transition
.
pResource
=
g_pIARenderTargets
[
nCurrentFrameIndex
].
Get
();
pICmdListPost
->
ResourceBarrier
(
1
,
&
stEn
e
ResBarrier
);
pICmdListPost
->
ResourceBarrier
(
1
,
&
stEn
d
ResBarrier
);
//关闭命令列表,可以去执行了
//关闭命令列表,可以去执行了
GRS_THROW_IF_FAILED
(
pICmdListPre
->
Close
());
GRS_THROW_IF_FAILED
(
pICmdListPre
->
Close
());
...
...
7-D3D12MultiAdapter/7-D3D12MultiAdapter.cpp
浏览文件 @
0f023258
...
@@ -605,7 +605,7 @@ int APIENTRY _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR l
...
@@ -605,7 +605,7 @@ int APIENTRY _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR l
stGPUParams
[
iGPUIndex
].
m_pICmdList
->
SetName
(
pszDebugName
);
stGPUParams
[
iGPUIndex
].
m_pICmdList
->
SetName
(
pszDebugName
);
}
}
if
(
iGPUIndex
==
nIDGPUMain
)
if
(
iGPUIndex
==
nIDGPUMain
)
{
// 在主显卡上创建复制命令列表对象
{
// 在主显卡上创建复制命令列表对象
GRS_THROW_IF_FAILED
(
stGPUParams
[
iGPUIndex
].
m_pID3D12Device4
->
CreateCommandList
(
0
GRS_THROW_IF_FAILED
(
stGPUParams
[
iGPUIndex
].
m_pID3D12Device4
->
CreateCommandList
(
0
,
D3D12_COMMAND_LIST_TYPE_COPY
,
D3D12_COMMAND_LIST_TYPE_COPY
...
@@ -682,8 +682,8 @@ int APIENTRY _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR l
...
@@ -682,8 +682,8 @@ int APIENTRY _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR l
UINT64
n64szTexture
=
0
;
UINT64
n64szTexture
=
0
;
D3D12_RESOURCE_DESC
stCrossAdapterResDesc
=
{};
D3D12_RESOURCE_DESC
stCrossAdapterResDesc
=
{};
if
(
bCrossAdapterTextureSupport
)
if
(
bCrossAdapterTextureSupport
)
{
{
// 这表示可以在显卡间直接共享Texture,这就省去了Texture来回复制的麻烦
// 如果支持那么直接创建跨显卡资源堆
// 如果支持那么直接创建跨显卡资源堆
stCrossAdapterResDesc
=
stRenderTargetDesc
;
stCrossAdapterResDesc
=
stRenderTargetDesc
;
stCrossAdapterResDesc
.
Flags
=
D3D12_RESOURCE_FLAG_ALLOW_CROSS_ADAPTER
;
stCrossAdapterResDesc
.
Flags
=
D3D12_RESOURCE_FLAG_ALLOW_CROSS_ADAPTER
;
...
@@ -694,7 +694,8 @@ int APIENTRY _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR l
...
@@ -694,7 +694,8 @@ int APIENTRY _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR l
n64szTexture
=
stTextureInfo
.
SizeInBytes
;
n64szTexture
=
stTextureInfo
.
SizeInBytes
;
}
}
else
else
{
{
// 这表示只能在多个显卡间共享Buffer,这也是目前D3D12共享资源的最低要求,通常异构显卡目前只能共享Buffer
// 只能共享Buffer时,只能通过共享的Buffer来回复制Texture,在示例中就主要是复制Render Target Texture
// 如果不支持,那么我们就需要先在主显卡上创建用于复制渲染结果的资源堆,然后再共享堆到辅助显卡上
// 如果不支持,那么我们就需要先在主显卡上创建用于复制渲染结果的资源堆,然后再共享堆到辅助显卡上
D3D12_PLACED_SUBRESOURCE_FOOTPRINT
stResLayout
=
{};
D3D12_PLACED_SUBRESOURCE_FOOTPRINT
stResLayout
=
{};
stGPUParams
[
nIDGPUMain
].
m_pID3D12Device4
->
GetCopyableFootprints
(
stGPUParams
[
nIDGPUMain
].
m_pID3D12Device4
->
GetCopyableFootprints
(
...
@@ -716,7 +717,7 @@ int APIENTRY _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR l
...
@@ -716,7 +717,7 @@ int APIENTRY _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR l
stCrossAdapterResDesc
.
Flags
=
D3D12_RESOURCE_FLAG_ALLOW_CROSS_ADAPTER
;
stCrossAdapterResDesc
.
Flags
=
D3D12_RESOURCE_FLAG_ALLOW_CROSS_ADAPTER
;
}
}
// 创建跨显卡共享的资源堆
// 创建跨显卡共享的资源堆
,注意是默认堆
D3D12_HEAP_DESC
stCrossHeapDesc
=
{};
D3D12_HEAP_DESC
stCrossHeapDesc
=
{};
stCrossHeapDesc
.
SizeInBytes
=
n64szTexture
*
g_nFrameBackBufCount
;
stCrossHeapDesc
.
SizeInBytes
=
n64szTexture
*
g_nFrameBackBufCount
;
stCrossHeapDesc
.
Alignment
=
0
;
stCrossHeapDesc
.
Alignment
=
0
;
...
@@ -730,6 +731,7 @@ int APIENTRY _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR l
...
@@ -730,6 +731,7 @@ int APIENTRY _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR l
GRS_THROW_IF_FAILED
(
stGPUParams
[
nIDGPUMain
].
m_pID3D12Device4
->
CreateHeap
(
&
stCrossHeapDesc
GRS_THROW_IF_FAILED
(
stGPUParams
[
nIDGPUMain
].
m_pID3D12Device4
->
CreateHeap
(
&
stCrossHeapDesc
,
IID_PPV_ARGS
(
&
stGPUParams
[
nIDGPUMain
].
m_pICrossAdapterHeap
)));
,
IID_PPV_ARGS
(
&
stGPUParams
[
nIDGPUMain
].
m_pICrossAdapterHeap
)));
// 在主显卡上得到共享堆的句柄
HANDLE
hHeap
=
nullptr
;
HANDLE
hHeap
=
nullptr
;
GRS_THROW_IF_FAILED
(
stGPUParams
[
nIDGPUMain
].
m_pID3D12Device4
->
CreateSharedHandle
(
GRS_THROW_IF_FAILED
(
stGPUParams
[
nIDGPUMain
].
m_pID3D12Device4
->
CreateSharedHandle
(
stGPUParams
[
nIDGPUMain
].
m_pICrossAdapterHeap
.
Get
(),
stGPUParams
[
nIDGPUMain
].
m_pICrossAdapterHeap
.
Get
(),
...
@@ -738,6 +740,7 @@ int APIENTRY _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR l
...
@@ -738,6 +740,7 @@ int APIENTRY _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR l
nullptr
,
nullptr
,
&
hHeap
));
&
hHeap
));
// 在第二个显卡上打开句柄,实质就是完成了资源堆的共享
HRESULT
hrOpenSharedHandle
=
stGPUParams
[
nIDGPUSecondary
].
m_pID3D12Device4
->
OpenSharedHandle
(
hHeap
HRESULT
hrOpenSharedHandle
=
stGPUParams
[
nIDGPUSecondary
].
m_pID3D12Device4
->
OpenSharedHandle
(
hHeap
,
IID_PPV_ARGS
(
&
stGPUParams
[
nIDGPUSecondary
].
m_pICrossAdapterHeap
));
,
IID_PPV_ARGS
(
&
stGPUParams
[
nIDGPUSecondary
].
m_pICrossAdapterHeap
));
...
@@ -747,7 +750,7 @@ int APIENTRY _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR l
...
@@ -747,7 +750,7 @@ int APIENTRY _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR l
GRS_THROW_IF_FAILED
(
hrOpenSharedHandle
);
GRS_THROW_IF_FAILED
(
hrOpenSharedHandle
);
// 以定位方式在共享堆上创建每个显卡上的资源
// 以定位方式在共享堆上创建每个显卡上的资源
for
(
UINT
nFrameIndex
=
0
;
nFrameIndex
<
g_nFrameBackBufCount
;
nFrameIndex
++
)
for
(
UINT
nFrameIndex
=
0
;
nFrameIndex
<
g_nFrameBackBufCount
;
nFrameIndex
++
)
{
{
GRS_THROW_IF_FAILED
(
stGPUParams
[
nIDGPUMain
].
m_pID3D12Device4
->
CreatePlacedResource
(
GRS_THROW_IF_FAILED
(
stGPUParams
[
nIDGPUMain
].
m_pID3D12Device4
->
CreatePlacedResource
(
stGPUParams
[
nIDGPUMain
].
m_pICrossAdapterHeap
.
Get
(),
stGPUParams
[
nIDGPUMain
].
m_pICrossAdapterHeap
.
Get
(),
...
...
8-UIRenderBase/8-UIRenderBase.cpp
浏览文件 @
0f023258
此差异已折叠。
点击以展开。
9-D3D12RenderToTexture/9-RenderToTexture.cpp
浏览文件 @
0f023258
...
@@ -1320,8 +1320,8 @@ int APIENTRY _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR l
...
@@ -1320,8 +1320,8 @@ int APIENTRY _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR l
pICmdList
->
RSSetViewports
(
1
,
&
stViewPort
);
pICmdList
->
RSSetViewports
(
1
,
&
stViewPort
);
pICmdList
->
RSSetScissorRects
(
1
,
&
stScissorRect
);
pICmdList
->
RSSetScissorRects
(
1
,
&
stScissorRect
);
const
float
c
learColor
[]
=
{
0.0
f
,
0.0
f
,
0.5
f
,
1.0
f
};
const
float
arC
learColor
[]
=
{
0.0
f
,
0.0
f
,
0.5
f
,
1.0
f
};
pICmdList
->
ClearRenderTargetView
(
stRTVHandle
,
c
learColor
,
0
,
nullptr
);
pICmdList
->
ClearRenderTargetView
(
stRTVHandle
,
arC
learColor
,
0
,
nullptr
);
pICmdList
->
ClearDepthStencilView
(
dsvHandle
,
D3D12_CLEAR_FLAG_DEPTH
,
1.0
f
,
0
,
0
,
nullptr
);
pICmdList
->
ClearDepthStencilView
(
dsvHandle
,
D3D12_CLEAR_FLAG_DEPTH
,
1.0
f
,
0
,
0
,
nullptr
);
//再一次执行每个场景物体的的捆绑包,渲染到屏幕
//再一次执行每个场景物体的的捆绑包,渲染到屏幕
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录