【问题标题】:GLES 2.0+ Alpha not showingGLES 2.0+ Alpha 未显示
【发布时间】:2017-02-17 04:55:33
【问题描述】:

所以我正在使用 OpenGL ES 2.0,我正在渲染透明对象一个在另一个之上,一切似乎都在工作,但是如果我在我的片段着色器中低于 0.05,则没有任何渲染。我的渲染配置设置为:

glClearColor(0, 0, 0, 0);
glDisable(GL_DITHER);
glDisable(GL_CULL_FACE);
glDisable(GL_DEPTH_TEST);
glDepthMask(false);
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE);

我已经尝试将 GL_UNSIGNED_BYTE 和 GL_UNSIGNED_SHORT_4_4_4_4 作为渲染目标纹理类型,但没有成功。

我还能做些什么来提高 alpha 值和混合的精度吗?以 0.05 作为最小 alpha 值,它只给了我 20(1.0/0.05=20) 值可以使用。基本上,我将渲染纹理视为数据数组,并使用顶点着色器将值添加到不同的像素。

编辑:我正在使用 float highp,似乎没有帮助。

【问题讨论】:

    标签: android opengl-es


    【解决方案1】:

    您没有提及您在着色器中使用的精度 - 也许您应该将其设置为 highdp(在片段着色器中),看看这是否有帮助:

    precision highp float;
    

    (如果您需要确切知道所需的精度,可以使用 glGetShaderPrecisionFormat)

    【讨论】:

    • 你不应该需要 highp; mediump (fp16) 的精度足以处理比 2dp 更多的小数位精度。
    • 好吧,无论出于何种原因,它在 0.05 以下都不起作用,这似乎是一个硬分界点,因为 0.049 也不起作用。对于我正在做的事情,我能获得的价值越低越好。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多