纹理和背景混合一点

时间:2016-01-13 18:05:53

标签: c++ opengl graphics sdl

所以我正在为我的大学任务制作一个简单的opengl / SDL项目。

基本上是一个非常简单的游戏,角色在屏幕上移动。

我差不多完成但我遇到了问题。

因此,当我加载纹理等时,它们会混合在一起并相互“闪耀”。

以下是一个例子:

enter image description here

左 - 红色背景颜色glClearColor(1.0f,0.0f,0.0f,0.0f); 中 - 绿色背景颜色
右 - 黑色背景

正如你所看到的,背景正在影响它前面的纹理,我真的不喜欢它。

黑色背景很好(让我的纹理有点暗)我可以忍受它,但正如你所看到的,在黑色背景下,我们可以通过他看到vader背后的纹理。

这是他肩膀上最引人注目的。我宁愿保持纹理完全不透明,并保持颜色不变。

要删除我使用的Alpha通道

    glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);

但我觉得这不是最好的方法,因为它也将所有纹理融合在一起。

有没有办法让图像保持完全不透明,同时保持alpha通道,所以它周围没有东西?

1 个答案:

答案 0 :(得分:-1)

好的,我已经修好了。 事实证明,我在着色器中有一段代码可以融合所有内容。