gpt4 book ai didi

ios - 改变 alpha 会改变颜色

转载 作者:行者123 更新时间:2023-11-29 13:00:06 25 4
gpt4 key购买 nike

我在 OpenGL ES 中渲染元素,它们具有相同的颜色,但 alpha 不同。问题是当 alpha 为 .1 时,颜色会发生变化,而不仅仅是不透明度。例如,当 alpha 分量的值设置为 0.1 时,颜色将从黑色变为紫色。当 alpha 值不是 .1 或其他一些十分之一值时,它工作正常。

我在绘制之前设置混合:

glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA);

绘图:

// if the element has any data, then draw it
if(vertexBuffer){
glVertexPointer(2, GL_FLOAT, sizeof(struct Vertex), &vertexBuffer[0].Position[0]);
glColorPointer(4, GL_FLOAT, sizeof(struct Vertex), &vertexBuffer[0].Color[0]);
glTexCoordPointer(2, GL_FLOAT, sizeof(struct Vertex), &vertexBuffer[0].Texture[0]);
glDrawArrays(GL_TRIANGLES, 0, [element numberOfSteps] * [element numberOfVerticesPerStep]);
}

最佳答案

这是预乘 alpha 的正常行为(您的混合函数暗示)。使用预乘 alpha 时,必须同时更改颜色和 alpha。

因此,无论何时更改 alpha 的值,新颜色都应等于 originalColor * alpha。请注意,您应该使用 alpha 的浮点归一化值(例如 0.0 - 1.0)而不是定点值(例如 0 - 255)

考虑您选择的混合函数:

目标RGB = (源RGB * 1.0) + (目标RGB * (1.0 - 源A ));

传统的 alpha 混合是:

目标RGB =(源RGB * 源A)+(目标RGB *(1.0 - 源A));

请注意更传统的混合方程如何执行 SrcRGB * SrcA?只有当 RGB 分量确实与 alpha 分量预乘时,您的特定混合方程才能正常工作。

关于ios - 改变 alpha 会改变颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19984139/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com