سؤال

إليك قانون بلدي:

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();
}

والمشكلة هي أن هاتين النقطتين تظهر متطابقة (حتى عندما أنا وضعت ألفا إلى 0). هل هناك شيء فاتني لتمكين الشفافية ألفا؟

هل كانت مفيدة؟

المحلول

ومجرد تخمين، ولكن يمكن أن يكون ذلك لم يكن لديك لون الخلفية؟ لذا، عند تقديم الخاص على قمة الثانية التي تضم ألفا 0.1، ليس هناك خلفية لحساب اللون الصحيح؟ مجرد تخمين، منذ سنوات منذ أن كنت تستخدم برنامج OpenGL.

نصائح أخرى

هل glEnable'd مزج ألفا؟ ولقد قمت بإعداد المعلمات مزيج الخاصة بك؟ لا يمكنك مجرد مجموعة ألفا تحتاج إلى إعداد مختلف العوامل الأخرى في OpenGL.

glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glEnable( GL_BLEND );
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top