小编Joe*_*Jia的帖子

如何使用OpenGL避免透明度重叠?

我正在研究iOS上的手写应用程序.我从iOS文档中找到了由OpenGL ES实现的示例项目"GLPaint",并对其进行了一些修改.

我跟踪触摸点并计算点之间的曲线并单独绘制粒子图像曲线,使其看起来像手指经过的位置.

glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, brushData); // burshData is from CGImage, it is 

// vertexBuffer is generated based on the calculated points, it's just a sequence of point where need to draw image.
glVertexPointer(2, GL_FLOAT, 0, vertexBuffer); 
glDrawArrays(GL_POINTS, 0, vertexCount);

glBindRenderbufferOES(GL_RENDERBUFFER_OES, viewRenderbuffer);
[context presentRenderbuffer:GL_RENDERBUFFER_OES];
Run Code Online (Sandbox Code Playgroud)

我得到的是一条看起来相当不错的实线.但现在我想绘制半透明高光而不是实线.因此,我使用50%透明度替换粒子图像而不更改代码.

50%透明度粒子图像的结果

50%透明度粒子图像的结果

混合有问题.

我需要的

我需要的

我使用半透明度粒子图像绘制三个点,交叉区域应保持50%的透明度.

解决方案是什么?

transparency alpha opengl-es overlap ios

6
推荐指数
2
解决办法
2242
查看次数

标签 统计

alpha ×1

ios ×1

opengl-es ×1

overlap ×1

transparency ×1