Questions tagged «blending»

5
如何使用alpha混合和粒子实现良好的射击效果?
对OpenGL粒子效果使用以下设置: SRC: GL_SRC_ALPHA DST: GL_ONE 创建一种添加剂混合物,当它开始褪色为白色时,它在黑色背景上看起来很壮观,但在较亮的颜色上却很糟糕。 然后,我使用了alpha混合: SRC: GL_SRC_ALPHA DST: GL_ONE_MINUS_SRC_ALPHA 这允许使用其他背景而不影响颗粒的颜色,但是与添加剂共混物相比,颗粒本身看起来暗淡无光。如何使用alpha混合和粒子实现良好的射击效果? 添加剂: Α: 更新: 按照David的建议,我创建了一个单独的纹理,然后在绘制纹理之前对粒子效果使用了添加剂混合。这样做的问题是,在alpha = 0的纹理上绘制只会导致粒子的彩色部分出现在我的世界地图的前面,因为通常您使用的是黑色背景。诀窍是使用两个纹理。我创建了一个黑色纹理,然后在其上绘制了粒子。然后,我从该纹理中删除了粒子的alpha层,有效地删除了所有周围的纯黑色并淡化了部分可见的粒子,同时保留了在黑色背景上制作添加剂混合粒子时所期望的底层黑色。简而言之,这是一个艰苦的过程,但我最终到达了那里: 这是我发布流程的线程:http : //www.cocos2d-iphone.org/forum/topic/28707?replies=8#post-141528 视频:http : //www.youtube.com/watch?v=JptGbEO3b5E

2
如何在复杂的3D场景中正确实现Alpha混合?
我知道这个问题听起来似乎很容易回答,但这让我发疯。好的alpha混合机制应该处理的情况太多了,对于每种算法,我都能想到缺少一些东西。 这些是我到目前为止所使用的方法: 首先,虽然关于按深度对对象进行排序,但由于对象不是简单的形状,它们可能具有曲线,并且可能在彼此内部循环,因此这只是失败了。所以我不能总是说出哪一个离相机更近。 然后我考虑了对三角形进行排序,但是这个三角形也可能失败,以为我不确定如何实现它,在极少数情况下,可能会再次引起问题,即两个三角形相互穿过。同样,没有人能说出哪一个更近。 接下来是使用深度缓冲区,至少我们拥有深度缓冲区的主要原因是因为我提到的排序问题,但现在又遇到了另一个问题。由于对象可能是透明的,因此在单个像素中可能会看到多个对象。那么我应该为哪个对象存储像素深度? 然后,我想也许我只能存储最前面的对象深度,并以此确定我应该如何在该像素处混合下一个绘制调用。但是还是有一个问题,考虑两个半透明的平面,中间有一个实心平面。我打算在最后渲染实体平面,可以看到最远的平面。请注意,我将每两个平面合并一次,直到该像素只剩下一种颜色为止。显然,由于上述原因,我也可以使用排序方法。 最后,我认为能够工作的唯一一件事就是将所有对象渲染到不同的渲染目标中,然后对这些图层进行排序并显示最终输出。但是这次我不知道如何实现该算法。
11 3d  blending 

2
如何在2.5D世界中同时使用深度测试和纹理透明度?
注意:我已经找到了答案(我将在这个问题之后发布)-我只是想知道我是否做对了,或者是否有更好的方法。 我正在使用OpenGL ES(JOGL)制作“ 2.5D”等距游戏。“ 2.5D”是指世界是3D,但使用2D等距图块进行渲染。 我必须解决的原始问题是必须按顺序(从后到前)渲染纹理,以便图块正确重叠以产生合适的效果。经过一番阅读,我很快意识到这是2D的“老帽子”方法。由于玩家可以修改3D世界(因此东西可以出现在3D空间中的任何地方),因此很难有效地做到这一点-因此,我利用深度缓冲区似乎是合乎逻辑的。这意味着我不必担心以正确的顺序渲染内容。 但是,我遇到了一个问题。如果将GL_DEPTH_TEST和GL_BLEND一起使用,则会创建一种效果,在将对象与背景混合之前,先按z顺序对其进行“排序”(这意味着您应该在透明度应达到的地方获得一种奇怪的重叠)。 这是一些应该说明问题的伪代码(顺便说一句,我在Android上使用libgdx)。 create() { // ... // some other code here // ... Gdx.gl.glEnable(GL10.GL_DEPTH_TEST); Gdx.gl.glEnable(GL10.GL_BLEND); } render() { Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT); Gdx.gl.glBlendFunc(GL10.GL_SRC_ALPHA, GL10.GL_ONE_MINUS_SRC_ALPHA); // ... // bind texture and create vertices // ... } 所以问题是:如何解决透明度重叠问题?

1
使用glBlendFunc在Cocos2D中混合模式
我们一直在尝试复制Photoshop和Quartz 2D中可用的最常见的混合模式,但我们只提出了3种,这是经过长时间的在线搜索后才提出的。 对于任何有兴趣的人,这里是: 乘 = GL_DST_COLOR,GL_ONE_MINUS_SRC_ALPHA 屏幕 = GL_MINUS_DST_COLOR,GL_ONE 线性道奇 = GL_ONE,GL_ONE 您可以在这个非常有用的网站上在线尝试这些和其他类似的模式:http : //www.andersriggelsen.dk/glblendfunc.php 现在,如果有人可以为我们提供可以在Cocos2D中重新创建的其他混合模式,我们将不胜感激,因为我们的Open GL经验确实非常有限。 先感谢您! 阿尔吉里斯
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.