首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GLKit多边形半透明

GLKit多边形半透明
EN

Stack Overflow用户
提问于 2012-09-14 23:54:32
回答 2查看 483关注 0票数 1

我试着用GLKit绘制半透明的多边形,但没有成功。因为我知道OpenGL的标准实现不支持半透明多边形,所以我想知道在GLKit中是否有可能首先拥有半透明多边形;但是可以使用自定义着色器来模拟。但是由于GLKit编译了它自己的着色器,我需要知道我是应该继续使用GLKit还是使用我自己的自定义着色器。我的代码如下:

代码语言:javascript
复制
// setup states
glEnable(GL_BLEND);
glBlendFuncSeparate(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA, GL_ONE, GL_ONE_MINUS_SRC_ALPHA);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);

self.effect.texture2d0.enabled   = GL_FALSE;
self.effect.colorMaterialEnabled = GL_TRUE;
self.effect.transform.modelviewMatrix = self.modelMatrix;

glEnableVertexAttribArray(GLKVertexAttribPosition);
glEnableVertexAttribArray(GLKVertexAttribColor);

[self.effect prepareToDraw];

// draw triangles
glVertexAttribPointer(GLKVertexAttribPosition, 3, GL_FLOAT, GL_FALSE, sizeof(LineVertex), &_vertices[0].pos);
glVertexAttribPointer(GLKVertexAttribColor, 4, GL_FLOAT, GL_FALSE, sizeof(LineVertex), &_vertices[0].color);

glDrawArrays(GL_TRIANGLES, 0, _vertexCount);

提前谢谢。

EN

回答 2

Stack Overflow用户

发布于 2012-09-16 09:58:46

你的问题令人困惑,但听起来像是有透明的对象相互画在一起,如果是这样的话,使用

代码语言:javascript
复制
glEnable(GL_BLEND);
glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA);

而不是你在那里得到的。

并检查像深度测试或模板测试(不太可能,但有可能)这样的东西并没有阻止绘制……

票数 1
EN

Stack Overflow用户

发布于 2012-09-18 06:49:39

问题是,我在前面的某个地方使用了glEnable(GL_DEPTH_TEST),它在Alpha0.5处停止了两个多边形,创建了与Alpha1.0的交集。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12427978

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档