gpt4 book ai didi

c++ - OpenGL 中的调色板动画

转载 作者:搜寻专家 更新时间:2023-10-31 00:06:08 24 4
gpt4 key购买 nike

我正在制作一款老式 2d 游戏,我想在我的纹理中为特定颜色设置动画。

我知道的唯一方法是:

  1. opengl 着色器。
  2. 仅对一个颜色 channel 进行动画处理。
  3. 彩色动画纹理下的白色纹理。

但我不想使用着色器,我想让这个游戏尽可能简单,没有太多额外的 openGL 函数等。

颜色 channel 动画不适合这个,因为我的纹理中需要所有颜色 channel 。

目前我正在使用 2 个纹理来实现:另一个纹理下的白色纹理,将特定像素颜色转换为透明,然后我使用 glColor3f() 函数将白色纹理颜色更改为我想要的颜色,我看到了“调色板”特定颜色的动画”。

但是这种风格听起来很老套,所以我想知道是否有更好的技巧?

最佳答案

虽然我不熟悉调色板纹理扩展,但我仍然建议使用片段着色器来实现这种效果。与您提到的其他方法相比,使用着色器进行色键替换几乎是微不足道的,而且比您自己编写调色板功能要快得多。

这是一个示例 GLSL 片段着色器,无论传入什么颜色,它都会替换纹理中的白色。

uniform vec4 fvReplaceColor;
uniform sampler2D baseMap;
varying vec2 Texcoord;

void main( void )
{
vec4 fvBaseColor = texture2D( baseMap, Texcoord);

if(fvBaseColor == vec4(1.0, 1.0, 1.0, 1.0))
fvBaseColor = fvReplaceColor;

gl_FragColor = fvBaseColor;
}

是的,设置着色器确实需要一点额外的时间,但听起来你正在尝试做的事情我觉得这是最好的方法。

关于c++ - OpenGL 中的调色板动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/662440/

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