glColor4fv Alpha值在PyOpenGL中不起作用

iyr7buue  于 2023-08-04  发布在  其他
关注(0)|答案(1)|浏览(101)

我使用glColor4fv来设置我在PyOpenGL中绘制的东西的颜色,但是alpha值没有影响任何东西。它正确地设置了颜色,但所有内容都被绘制为alpha值为1.0。

glColor4fv((0.2, 1.0, 0.6, 0.5))
gluSphere(gluNewQuadric(), .1, 64, 64)

字符集
这里是init()函数,如果它有帮助的话,我假设我在那里遗漏了一些东西。根据ChatGPT,启用GL_BLEND应该可以做到这一点,但它并没有产生任何影响。

def init():
    pygame.init()
    display_info = pygame.display.Info()
    display = (display_info.current_w, display_info.current_h)
    pygame.display.set_mode(display, DOUBLEBUF | OPENGL)
    gluPerspective(45, (display[0] / display[1]), 0.1, 50.0)
    glEnable(GL_DEPTH_TEST)

    # Enable Alpha Values (Supposedly)
    glEnable(GL_BLEND)

    glClearColor(0.0, 0.0, 0.0, 1.0)
    glTranslatef(0, 0, -1)
    glMatrixMode(GL_MODELVIEW)

ar7v8xwq

ar7v8xwq1#

默认的混合函数是glBlendFunc(GL_ONE, GL_ZERO)

fragment_color = source_color * 1 + destination_color * 0

字符集
你需要使用一个不同的混合函数:

fragment_color = source_color * source_alpha + destination_color * (1-source_alpha)
glEnable(GL_BLEND)
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA)

的数据
参见Blending

相关问题