簡體   English   中英

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

[英]How to use alpha transparency in OpenGL?

這是我的代碼:

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混合嗎? 你有沒有設置你的混合參數? 您不能只設置在OpenGL中設置各種其他參數所需的alpha。

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

只是一個猜測,但可能是你沒有背景顏色? 那么,當你渲染第二個具有alpha 0.1的頂點時,沒有背景來計算正確的顏色? 只是一個猜測,我使用opengl已經好幾年了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM