作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 iOS OpenGL ES 2.0 3D 游戏,我正在努力让透明纹理很好地工作,在这个特定的栅栏示例中。
我将从最终结果开始。一些绿色背景/清晰的颜色从围栏的边缘穿过 - 请注意它不是所有边缘,其中一些还可以:
右上角没有出血的原因是操作顺序。从下面的照片中可以看出,绘制顺序包括一些在围栏之前绘制的建筑物。但大部分是在围栏之后:
因此,一种解决方案是始终最后绘制我的透明纹理对象。我想探索其他解决方案,因为我的管道可能并不总是允许这样做。我正在寻找其他建议来解决这个问题,而无需对我的抽奖进行排序。
这可能是一个深度或混合函数,但我已经尝试了很多东西,但似乎没有任何效果(不同的混合函数、不同的丢弃 alpha 级别、不同的背景颜色、不同的纹理设置)。
以下是我的实现的一些细节。
在我的片段着色器中,我丢弃了具有透明度的片段 - 这样它们就不会渲染到深度:
lowp vec4 texVal = texture2D(sTexture, texCoord);
if(texVal.w < 0.5)
discard;
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR);
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
最佳答案
尝试增加 alpha 过滤器限制,lowp vec4 texVal = texture2D(sTexture, texCoord);
if(texVal.w < 0.9)
discard;
关于opengl-es-2.0 - 如何停止透明纹理上的 OpenGL 背景流血,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15314180/
我需要访问透视视口(viewport)的 FOV 属性。这与与目标和自由相机关联的 FOV 属性不同。 要以非编程方式访问 FOV 属性,请右键单击视口(viewport)名称(每个视口(viewpo
我是一名优秀的程序员,十分优秀!