c++ - 着色器透明度不适用于一半

标签 c++ opengl glsl fragment-shader alphablending

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

并在片段着色器中使用它。

我已经使用 Alpha 混合来获得透明度,但它似乎只在一侧起作用。

不确定是什么问题,我是编程和着色方面的新手。

http://imgur.com/WDK4qjc链接看图

最佳答案

我认为您看到 2 个远方的面孔在颜色较深的地方融合在一起。

也许剔除没有激活。

人脸剔除是在一定条件下丢弃人脸绘制的能力。

为了达到你想要的效果,你必须丢弃不面向相机的面孔,即调用 backface culling .你这样做:

glEnableGL(GL_CULL_FACE);  //(enable face culling)
glCullFace(GL_BACK);       //(discard back faces)

关于c++ - 着色器透明度不适用于一半,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22611659/

相关文章:

c++ - GLSL 1.20 : sending attribute causes segmentation fault

c++ - 什么是 undefined reference /未解析的外部符号错误,我该如何解决?

swift - 需要 UnsafeMutablePointer<Type> 的函数!

c++ - 将浮点值转换为 RGB 值

c++ - 如何制作可移植且与编译器无关的 glBufferData?

opengl - 镜面光出现在物体的面向眼睛和背面

iphone - OpenGL ES 2.0 纹理

c++ - -读取字符串字符时出错

c++ - 模板偏特化

c++ - 在 C++ 中执行另一个程序