Skip to content

Commit a4c7953

Browse files
* 稍微优化下代码
1 parent f440a48 commit a4c7953

File tree

2 files changed

+23
-56
lines changed

2 files changed

+23
-56
lines changed

Chapter 10 Blending/GameApp.cpp

Lines changed: 22 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -396,20 +396,7 @@ void GameApp::renderShapes(GraphicsContext& gfxContext)
396396

397397
for (auto& item : m_vecShapes)
398398
{
399-
// 设置常量缓冲区数据
400-
ObjectConstants obc;
401-
obc.World = item.modelToWorld;
402-
obc.texTransform = item.texTransform;
403-
obc.matTransform = item.matTransform;
404-
gfxContext.SetDynamicConstantBufferView(0, sizeof(obc), &obc);
405-
406-
gfxContext.SetDynamicDescriptor(3, 0, item.srv);
407-
408-
MaterialConstants mc;
409-
mc.DiffuseAlbedo = { item.diffuseAlbedo.x, item.diffuseAlbedo.y, item.diffuseAlbedo.z, item.diffuseAlbedo.w };
410-
mc.FresnelR0 = item.fresnelR0;
411-
mc.Roughness = item.roughness;
412-
gfxContext.SetDynamicConstantBufferView(2, sizeof(mc), &mc);
399+
setShaderParam(gfxContext, item);
413400

414401
// 绘制
415402
gfxContext.DrawIndexedInstanced(item.indexCount, 1, item.startIndex, item.baseVertex, 0);
@@ -571,20 +558,7 @@ void GameApp::renderLandAndWaves(GraphicsContext& gfxContext)
571558
// 设置索引视图
572559
gfxContext.SetIndexBuffer(m_IndexBufferLand.IndexBufferView());
573560

574-
// 设置常量缓冲区数据
575-
ObjectConstants obc;
576-
obc.World = m_renderItemLand.modelToWorld;
577-
obc.texTransform = m_renderItemLand.texTransform;
578-
obc.matTransform = m_renderItemLand.matTransform;
579-
gfxContext.SetDynamicConstantBufferView(0, sizeof(obc), &obc);
580-
581-
gfxContext.SetDynamicDescriptor(3, 0, m_renderItemLand.srv);
582-
583-
MaterialConstants mc;
584-
mc.DiffuseAlbedo = { m_renderItemLand.diffuseAlbedo.x, m_renderItemLand.diffuseAlbedo.y, m_renderItemLand.diffuseAlbedo.z, m_renderItemLand.diffuseAlbedo.w };
585-
mc.FresnelR0 = m_renderItemLand.fresnelR0;
586-
mc.Roughness = m_renderItemLand.roughness;
587-
gfxContext.SetDynamicConstantBufferView(2, sizeof(mc), &mc);
561+
setShaderParam(gfxContext, m_renderItemLand);
588562

589563
// 绘制
590564
gfxContext.DrawIndexedInstanced(m_IndexBufferLand.GetElementCount(), 1, 0, 0, 0);
@@ -597,20 +571,7 @@ void GameApp::renderLandAndWaves(GraphicsContext& gfxContext)
597571

598572
gfxContext.SetDynamicVB(0, m_verticesWaves.size(), sizeof(Vertex), m_verticesWaves.data());
599573

600-
// 设置常量缓冲区数据
601-
ObjectConstants obc;
602-
obc.World = m_renderItemWaves.modelToWorld;
603-
obc.texTransform = m_renderItemWaves.texTransform;
604-
obc.matTransform = Transpose(m_renderItemWaves.matTransform);
605-
gfxContext.SetDynamicConstantBufferView(0, sizeof(obc), &obc);
606-
607-
gfxContext.SetDynamicDescriptor(3, 0, m_renderItemWaves.srv);
608-
609-
MaterialConstants mc;
610-
mc.DiffuseAlbedo = { m_renderItemWaves.diffuseAlbedo.x, m_renderItemWaves.diffuseAlbedo.y, m_renderItemWaves.diffuseAlbedo.z, m_renderItemWaves.diffuseAlbedo.w };
611-
mc.FresnelR0 = m_renderItemWaves.fresnelR0;
612-
mc.Roughness = m_renderItemWaves.roughness;
613-
gfxContext.SetDynamicConstantBufferView(2, sizeof(mc), &mc);
574+
setShaderParam(gfxContext, m_renderItemWaves);
614575

615576
// 绘制
616577
gfxContext.DrawIndexedInstanced(m_IndexBufferWaves.GetElementCount(), 1, 0, 0, 0);
@@ -623,20 +584,7 @@ void GameApp::renderLandAndWaves(GraphicsContext& gfxContext)
623584
// 设置索引视图
624585
gfxContext.SetIndexBuffer(m_IndexBufferBox.IndexBufferView());
625586

626-
// 设置常量缓冲区数据
627-
ObjectConstants obc;
628-
obc.World = m_renderItemBox.modelToWorld;
629-
obc.texTransform = m_renderItemBox.texTransform;
630-
obc.matTransform = m_renderItemBox.matTransform;
631-
gfxContext.SetDynamicConstantBufferView(0, sizeof(obc), &obc);
632-
633-
gfxContext.SetDynamicDescriptor(3, 0, m_renderItemBox.srv);
634-
635-
MaterialConstants mc;
636-
mc.DiffuseAlbedo = { m_renderItemBox.diffuseAlbedo.x, m_renderItemBox.diffuseAlbedo.y, m_renderItemBox.diffuseAlbedo.z, m_renderItemBox.diffuseAlbedo.w };
637-
mc.FresnelR0 = m_renderItemBox.fresnelR0;
638-
mc.Roughness = m_renderItemBox.roughness;
639-
gfxContext.SetDynamicConstantBufferView(2, sizeof(mc), &mc);
587+
setShaderParam(gfxContext, m_renderItemBox);
640588

641589
// 绘制
642590
gfxContext.DrawIndexedInstanced(m_IndexBufferBox.GetElementCount(), 1, 0, 0, 0);
@@ -700,4 +648,22 @@ void GameApp::AnimateMaterials(float deltaT)
700648
tv -= 1.0f;
701649

702650
m_renderItemWaves.matTransform.SetW({ tu, tv, 0.0f, 1.0f });
651+
}
652+
653+
void GameApp::setShaderParam(GraphicsContext& gfxContext, renderItem& item)
654+
{
655+
// 设置常量缓冲区数据
656+
ObjectConstants obc;
657+
obc.World = item.modelToWorld;
658+
obc.texTransform = item.texTransform;
659+
obc.matTransform = Transpose(item.matTransform);
660+
gfxContext.SetDynamicConstantBufferView(0, sizeof(obc), &obc);
661+
662+
gfxContext.SetDynamicDescriptor(3, 0, item.srv);
663+
664+
MaterialConstants mc;
665+
mc.DiffuseAlbedo = { item.diffuseAlbedo.x, item.diffuseAlbedo.y, item.diffuseAlbedo.z, item.diffuseAlbedo.w };
666+
mc.FresnelR0 = item.fresnelR0;
667+
mc.Roughness = item.roughness;
668+
gfxContext.SetDynamicConstantBufferView(2, sizeof(mc), &mc);
703669
}

Chapter 10 Blending/GameApp.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ class GameApp : public GameCore::IGameApp
4747
void renderLandAndWaves(GraphicsContext& gfxContext);
4848
void UpdateWaves(float deltaT);
4949
void AnimateMaterials(float deltaT);
50+
void setShaderParam(GraphicsContext& gfxContext, renderItem& item);
5051

5152
private:
5253
// 顶点结构体

0 commit comments

Comments
 (0)