gpt4 book ai didi

android - `glTexEnv`、 `glColor4x` 和 `glBlendFunc` 在 OpenGL ES 1.0 中有何关联?

转载 作者:太空宇宙 更新时间:2023-11-03 13:04:26 28 4
gpt4 key购买 nike

我正在查看 SurfaceFlinger,即在 Android 中进行合成的代码,但我无法理解一些 OpenGL ES 1.0 调用,因为我只编写了 ES 2.0 代码。

下面是我感兴趣的一段代码:

glTexEnvx(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
glColor4x(0x10000, 0x10000, 0x10000, 0x10000);
glEnable(GL_BLEND);
glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA);

它应该做的是将纹理混合到缓冲区中。

为什么需要 glTextEnvxglColor4x 调用? glBlendFunc 是否足以实现混合?

知道我的问题很天真,但即使在阅读了 docs 之后我仍然不明白什么是 glTexEnvx .

最佳答案

glTexEnv() 设置纹理环境模式。 GL_REPLACE 告诉渲染器跳过当前颜色(例如,来自 glColor4()),而是告诉渲染器为每个相应的像素使用纹理的颜色。如果您使用 GL_MODULATE 而不是 GL_REPLACE,那么当渲染器设置像素的颜色。

你的 glColor4() 调用不应该做任何可以在你的对象上看到的事情(当使用 GL_REPLACE 时)。

关于您的 glBlendFunc() 参数:

GL_ONE 使用来自传入图元的当前颜色,我们称之为 sourceGL_ONE_MINUS_SRC_ALPHA目标(帧缓冲区中当前存储的像素)乘以(1 - 源 alpha 值)。

通常,当您不使用纹理时,当 glColor4() 包含一个 alpha 值,其中 1 等于完全不透明且0 完全透明。

关于android - `glTexEnv`、 `glColor4x` 和 `glBlendFunc` 在 OpenGL ES 1.0 中有何关联?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6832612/

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