应该使用什么Direct3D渲染状态来实现Java的Porter-Duff合成规则(CLEAR,SRC,SRCOVER等)?在Direct3D中实现Porter-Duff规则
1
A
回答
2
我没有太多使用Java,但基于white paper from 1984,它应该是渲染状态混合模式的相当直接的映射。
当然,您可以做的不仅仅是这些,比如正常的alpha混合(SourceAlpha,InvSourceAlpha)或者添加剂(One,One)等等。 (我假设你是问关于这些具体,因为你是移植现有的一些功能呢?在此,因为你可能不关心其他组合...)
无论如何,这些假设添加的BlendOperation和AlphaBlendEnable是真正。
清除
SourceBlend = Zero
DestinationBlend = Zero
甲
SourceBlend = One
DestinationBlend = Zero
乙
SourceBlend = Zero
DestinationBlend = One
A对B
SourceBlend = One
DestinationBlend = InvSourceAlpha
B,经甲
SourceBlend = InvDestinationAlpha
DestinationBlend = One
甲在乙
SourceBlend = DestinationAlpha
DestinationBlend = One
B在A中
SourceBlend = Zero
DestinationBlend = SourceAlpha
A掉乙
SourceBlend = InvDestinationAlpha
DestinationBlend = Zero
B发出甲
SourceBlend = Zero
DestinationBlend = InvSourceAlpha
甲顶上乙
SourceBlend = DestinationAlpha
DestinationBlend = InvSourceAlpha
乙顶上的
SourceBlend = InvDestinationAlpha
DestinationBlend = SourceAlpha
甲XOR B
SourceBlend = InvDestinationAlpha
DestinationBlend = InvSourceAlpha
链接这些是有点复杂并需要任一多遍或多种纹理输入到着色器。
0
当我为“A”(即绘制源像素颜色/ alpha并忽略目标像素颜色/ alpha)实现渲染状态时,Direct3D似乎无法正确执行操作,如果源具有alpha零值。我没有看到目标区域的透明度,而是看到目标区域保持不变。但是,如果我将源Alpha值更改为1,则目标区域变得“虚拟”透明。即使我禁用了alphablending渲染状态,也会发生这种情况,所以我认为这是一个优化尝试,实际上是Direct3D中的一个错误。
除了这种情况,看起来Corey的渲染状态是正确的。谢谢,科里!
0
一两件事来检查,确保阿尔法测试了与
AlphaTestEnable = false
如果是在(与类似AlphaFunction =大和ReferenceAlpha = 0),清晰的像素可以扔掉不管AlphaBlendEnable设置。
1
对于“A中B”的情况,不应该DestinationBlend为零?
在B A
SourceBlend = DestinationAlpha
DestinationBlend = Zero
相关问题
- 1. 在OpenGL中实现缠绕规则
- 2. 在grails中实现密码规则
- 3. 计算剪辑规则中的现有事实规则
- 4. 如何实现这个重写规则
- 5. java规则扩展和实现
- 6. StyleCop SA1600规则和接口实现
- 7. 在Rails应用程序中实现规则引擎
- 8. 如何在wpf/XAML中实现条件验证规则
- 9. 如何在Ruby on Rails中实现复杂的安全规则
- 10. 如何在JavaCC中实现JavaScript/ECMAScript“no LineTerminator here”规则?
- 11. 如何在PHP中实现类似MySQL的latin1_general_ci排序规则?
- 12. 在SQLite中为WinRT实现自定义排序规则
- 13. WM_MOUSEMOVE不能在Direct3D中使用FPS相机实现
- 14. 正则表达式实现偶数负号的规则
- 15. 使用.NET Reflector查看Resharper中如何实现命名规则
- 16. 实现常规树
- 17. sonarlint规则出现在错误列表中,但未找到规则集文件
- 18. PEP 8规则的现状?
- 19. Yii2 RBAC规则实施
- 20. 从规则中获取事实清单
- 21. Java中的红黑树规则实施
- 22. 全球规则适用于所有现有规则
- 23. 关键字包含在头文件vs源/实现文件中的C++“规则”
- 24. 如何在Java EE中实现定价模型 - 通过规则引擎?
- 25. 如何在位置中使用空格(%C2%A0)实现Nginx重写规则?
- 26. 从事实形成规则。基于规则的编程
- 27. 如何在pybrain中实现正则化
- 28. 规则中的序言规则
- 29. 实现LDAP合规性
- 30. 实现SQL 3NF规范化