zoukankan      html  css  js  c++  java
  • 在DirectX12中使用blend

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

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

  • 相关阅读:
    JSTL笔记(胖先生版)
    EL表达式(胖先生版)
    包装类-Character
    String定义与方法
    冒泡排序(大熊版)
    tomcat Manger App
    第一天
    剑指offer:面试题5、从尾到头打印链表
    剑指offer:面试题4、替换空格
    剑指offer:面试题3、二维数组中的查找
  • 原文地址:https://www.cnblogs.com/back-to-the-past/p/14438959.html
Copyright © 2011-2022 走看看