我有下一个过程:
- draw background
- draw objects and blend with background (1)GL10.GL_SRC_ALPHA, GL10.GL_ONE_MINUS_SRC_ALPHA
- draw particle effect with blending (2)GL10.GL_SRC_ALPHA, GL10.GL_ONE in order to highlight overlapping particles
Run Code Online (Sandbox Code Playgroud)
问题 - 当我绘制粒子时,它们还与背景混合并变得非常明亮.
我只需要将颗粒与(2)混合在一起,然后使用(1)与背景混合.
不工作解决方案:
这是显示差异的屏幕.在正确的期望结果上,左侧粒子与背景混合.
IMG:
我将不胜感激任何帮助......
最新更新: 我能够得到我想要的颜色......但是......(似乎这种方式会让我无处可去)我渲染了alpha = 0的背景,而不是使用GL11Ext的混合函数:glBlendFuncSeparate(GL10.GL_SRC_ALPHA, GL10.GL_DST_ALPHA,GL10.GL_ONE,GL10.GL_ONE);
GL10.GL_SRC_ALPHA,GL10.GL_DST_ALPHA - 颜色只有在有alpha时才会混合(bg现在没有)
GL10.GL_ONE,GL10.GL_ONE - 对于所有书写粒子,alpha设置为最大值以模拟添加剂混合
它可以很好地工作,你可以看到...除了黑色填充区域,其中粒子图像具有alpha 0 ..并且有什么不好,结果图像中黑色有alpha 1所以我无法以任何方式替换它...
EDIT_2 简单的一般问题:我需要绘制一个红色(0xff0000)发光(添加混合)效果.在黑色背景上它是好的,但如果我采取绿色(0x00ff00)比结果颜色将接近0xffff00
有任何想法吗?
class Employee {
public string department;
public int salary;
}
List<Employee> allEmployees = ...
Run Code Online (Sandbox Code Playgroud)
我需要有一个列表,每个部门只有一名最高薪员工.allEmployees是源列表.
我想在处理屏幕方向方面模拟youtube视频观看行为。
用例:
p1。当用户按下最大化->活动总是进入横向
p2。当用户按下最小化->活动总是进入肖像
p3。当用户旋转设备时-即使之前已应用p1或p2,屏幕方向也应相应更改。
目前,我使用:
@Override
public void onClick(View view) {
if (getResources().getConfiguration().orientation == ORIENTATION_PORTRAIT) {
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE);
} else {
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_PORTRAIT);
}
Run Code Online (Sandbox Code Playgroud)
但是,这会永久锁定方向,并导致p3失败。