gpt4 book ai didi

iphone - OpenGL ES 1.1 : How to change texture color without losing luminance?

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:07:18 25 4
gpt4 key购买 nike

我希望能够在代码中更改颜色的粒子,因此可以使用任何颜色。所以我只有一个基本上有亮度的纹理。

我一直在使用 glColor4f(1f, 0f, 0f, 1f); 来应用颜色。

我尝试过的每一个接近工作的 blendfunc 最终都像下面的最后一张图片。我仍然想保持亮度,就像中间的图片一样。 (这就像 Photoshop 中的叠加或柔光滤镜,如果颜色层位于纹理层之上。)

关于如何在没有可编程着色器的情况下执行此操作的任何想法?此外,由于这些是粒子,我不想在它后面有一个黑盒子,我希望它添加到场景中。

alt text

最佳答案

这是一个可能接近您所寻找的解决方案:

glColor4f(1.0f, 0.0f, 0.0f, 1.0f);

glActiveTexture( GL_TEXTURE0 );
glEnable( GL_TEXTURE_2D );
glBindTexture(GL_TEXTURE_2D, spriteTexture);
glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE );

glActiveTexture( GL_TEXTURE1 );
glEnable( GL_TEXTURE_2D );
glBindTexture(GL_TEXTURE_2D, spriteTexture);
glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_ADD );

它所做的是将原始纹理乘以指定的颜色,然后在顶部添加原始纹理的像素值:

final_color.rgba = original_color.rgba * color.rgba + original_color.rgba;

这会产生比您要求的更亮的图像,但通过一些调整可能就足够了。

如果您想保留纹理的 alpha 值,则需要使用 GL_COMBINE 而不是 GL_ADD(+ 正确设置 GL_COMBINE_RGB 和 GL_COMBINE_ALPHA)。

以下是在您的纹理上使用此技术的一些结果。 alt text

关于iphone - OpenGL ES 1.1 : How to change texture color without losing luminance?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4361023/

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