【发布时间】:2011-06-02 12:49:20
【问题描述】:
这是交易,我想制作一个基于纹理的粒子系统,并且我有一个云纹理。我将纹理映射到 10 个不同的多边形,每个多边形具有相同的大小和纹理。 当我将它们相互混合时,就会出现问题,并且说 5 个多边形中的像素变得太白了!我不想要这个。我想要的是累积缓冲区的效果。我想实现这样的效果:
当只有 1 个多边形在页面中并且像素在其中时,说 Rx,Bx,Gx 是每个像素的颜色。现在我们有 n 个多边形,每个多边形都有相同的大小和纹理。
Rtotal = R1/n+R2/n+...+Rn/n Gtotal 和 Btotal 相同
我该怎么做才能从 alpha 混合中获得这样的结果。
顺便说一句,这里是初始化。
glEnable(GL_TEXTURE_2D);
glEnable(GL_BLEND);
glEnable(GL_DEPTH_TEST) ;
glDepthFunc(GL_ALWAYS);
glEnable(GL_NORMALIZE);
glColor4f(.5,.5, .5,.2);
glBlendFunc (GL_SRC_ALPHA, GL_DST_ALPHA);
【问题讨论】:
-
你忘了告诉你的目标 OpenGL 版本。
-
您可以使用着色器执行两遍解决方案,您可以在第一遍中计算每个片段中的粒子数。然后你可以按照你描述的方式进行划分。
-
听起来很酷的答案 :D 但对我来说很难,因为我是着色器的新手。