c++ - 如何在 OpenGL 中使用 alpha 透明度?

标签 c++ opengl transparency alpha

这是我的代码:

void display(void);

int main(int argc, char** argv)
{
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_SINGLE|GLUT_RGBA);
    glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
    glEnable( GL_BLEND );
    glutInitWindowSize(600,600);
    glutInitWindowPosition(200,50);
    glutCreateWindow("glut test");
    glutDisplayFunc(display);
    glutMainLoop();
    return 0;
}

void display()
{
    glClear(GL_COLOR_BUFFER_BIT);
    glPointSize(8);
    glBegin(GL_POINTS);
    glColor4f(.23,.78,.32,1.0);
    glVertex2f(0,0);
    glColor4f(.23,.78,.32,0.1);
    glVertex2f(0.1,0);
    glEnd();
    glFlush();
}

问题在于这两个点看起来相同(即使我将 alpha 设置为 0)。我是否错过了启用 Alpha 透明度的功能?

最佳答案

你有 glEnable'd alpha blending 吗?你设置好混合参数了吗?您不能只设置 OpenGL 中设置各种其他参数所需的 alpha。

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

关于c++ - 如何在 OpenGL 中使用 alpha 透明度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1617370/

相关文章:

c++ - 问题读取文件

c++ - 如何让我的 Display 函数在每次调用时只渲染 "current"帧?

java - 是否可以使 JFrame 始终位于应用程序之上。运行 OpenGL 和 DirectX?

android - TextView 中的 LinearGradient 和透明颜色

c++ - msgpack 的 object_with_zone 有什么作用?

c++ - 在其他线程QT/C++中调用方法

c++ - 输出 'external/name/x/lib/lib.so' 不是使用 bazel make 创建的

java - 无法正确纹理模型

java - 在 JPanel 上绘制部分透明的 PNG

transparency - 谷歌图表 : Transparency not working?