首页 > 其他 > 详细

在DirectX12中使用blend

时间:2021-02-24 10:23:00      阅读:21      评论:0      收藏:0      [点我收藏+]

我们只需要为透明的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

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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!