android– 如何在OpenGL ES 1.0中使用`glTexEnv`,`glColor4x`和`glBlendFunc`?

android– 如何在OpenGL ES 1.0中使用`glTexEnv`,`glColor4x`和`glBlendFunc`?,第1张

概述我正在看SurfaceFlinger,即在Android中进行组合的代码,我无法理解一些OpenGLES1.0调用,因为我只编写了ES2.0代码.以下是我感兴趣的代码:glTexEnvx(GL_TEXTURE_ENV,GL_TEXTURE_ENV_MODE,GL_REPLACE);glColor4x(0x10000,0x10000,0x10000,0x10000);glEnable(GL_BLEND);gl

我正在看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);

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

为什么需要glTextEnvx和glcolor4x调用? glBlendFunc不足以实现混合吗?

我知道我的问题是天真的,但我仍然不明白什么是glTexEnvx甚至在读完docs之后.

解决方法:

glTexEnv()设置纹理环境模式. GL_REPLACE告诉渲染器跳过当前颜色(例如,从glcolor4()),然后告诉渲染器为每个相应的像素使用纹理的颜色.如果您使用GL_MODulATE而不是GL_REPLACE,那么当渲染器设置像素的颜色时,glcolor4()调用将与纹理的颜色一起包含在内.

你的glcolor4()调用不应该在你的对象上做任何事情(当使用GL_REPLACE时).

关于你的glBlendFunc()参数:

GL_ONE使用来自传入原语的当前颜色,我们称之为源. GL_ONE_MINUS_SRC_Alpha将目标(帧缓冲区中当前存储的像素)乘以(1 – 源Alpha值).

通常,当您不使用纹理时,当glcolor4()包含一个Alpha值,其中1等于完全不透明且0完全透明时,您可以从颜色基元获得透明效果.

总结

以上是内存溢出为你收集整理的android – 如何在OpenGL ES 1.0中使用`glTexEnv`,`glColor4x`和`glBlendFunc`?全部内容,希望文章能够帮你解决android – 如何在OpenGL ES 1.0中使用`glTexEnv`,`glColor4x`和`glBlendFunc`?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1105337.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-28
下一篇2022-05-28

发表评论

登录后才能评论

评论列表(0条)

    保存