我试图在一个drawcall中绘制两个三角形。两个三角形是平行的。并且摄像机的前向方向沿着垂直于两个三角形的那些三角形的法线。从相机视图看,两个三角形完全重叠。
使用blendop srcAlpha和invSrcAlpha启用Alpha混合。背面三角形的颜色为(0,1,0,0.5),前面三角形的颜色为(1,0,0,0.5)。并且RT被清除为黑色。像素着色器只输出三角形颜色。
这是一个显示场景的图像,三角形的顶点在图像中被索引。
RT中的最终颜色可能是全部(0.5,0.25,0)。在图形管道中,是否保证红色三角形之前输出绿色三角形的像素?
答案 0 :(得分:0)
您对像素评估顺序没有任何保证,此处可以按任何顺序评估红色和绿色pxel。准确地按照在顶点/索引缓冲区中排序三角形的顺序执行。
它存在一个名为Rasterizer Order Views的功能,文档here。但是,首先,它取决于可选功能,其次,它只能在您使用无序访问视图时打开,当您只是使用输出合并来编写样本时,情况并非如此。
答案 1 :(得分:0)
看起来DirectX管道保证了订单。
“DirectX渲染遵循一套严格的规则,确保三角形始终按照提交顺序呈现:如果屏幕上有两个三角形重叠,则硬件保证三角形1的颜色结果会混合到屏幕之前三角形2经过处理和混合。“
以下是链接https://software.intel.com/en-us/gamedev/articles/rasterizer-order-views-101-a-primer,以及“DirectX管道和无人机的限制”部分。