码迷,mamicode.com
首页 > 其他好文 > 详细

在DirectX12中使用blend

时间:2021-02-24 13:22:08      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:lse   loading   info   dal   http   事先   nes   顺序   游戏   

我们只需要为透明的object设置一个新的pipelineStateObject即可。和不透明的object相比,就是额外设置了blend state:

		D3D12_RENDER_TARGET_BLEND_DESC blendDesc;
		blendDesc.BlendEnable = true;
		blendDesc.BlendOp = D3D12_BLEND_OP_ADD;
		blendDesc.BlendOpAlpha = D3D12_BLEND_OP_ADD;
		blendDesc.DestBlend = D3D12_BLEND_INV_SRC_ALPHA;
		blendDesc.DestBlendAlpha = D3D12_BLEND_ZERO;
		blendDesc.LogicOp = D3D12_LOGIC_OP_NOOP;
		blendDesc.LogicOpEnable = false;
		blendDesc.RenderTargetWriteMask = D3D12_COLOR_WRITE_ENABLE_ALL;
		blendDesc.SrcBlend = D3D12_BLEND_SRC_ALPHA;
		blendDesc.SrcBlendAlpha = D3D12_BLEND_ONE;
		psoDesc.BlendState.RenderTarget[0] = blendDesc;

有两点需要注意:

1.调用SetPipelineState切换不同的pipelineStateObject是有一定开销的,所以可以事先将需要渲染的objects根据不同的pipelineState先分好组,避免频繁切换pipelineState;

2.注意不同objects的渲染顺序,要先渲染不透明的objects,再从后往前地渲染透明的objects。

技术图片

如果你觉得我的文章有帮助,欢迎关注我的微信公众号(大龄社畜的游戏开发之路-

技术图片

在DirectX12中使用blend

标签:lse   loading   info   dal   http   事先   nes   顺序   游戏   

原文地址:https://www.cnblogs.com/back-to-the-past/p/14438959.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!