gpt4 book ai didi

python - Pyglet文字背景不透明

转载 作者:太空宇宙 更新时间:2023-11-04 05:06:47 25 4
gpt4 key购买 nike

我正在使用 Pyglet 为我的 Python 游戏创建主菜单。我想在充当其容器的框的顶部绘制文本。每当我渲染文本时,它都没有透明背景,而是绘制了 glClearColor 设置的内容。每当我尝试绘制没有背景的图像时,也会发生这种情况。

我目前将这两行用于我的文本框和文本。

self.text_box = pyglet.sprite.Sprite(pyglet.image.load('../Resources/Textures/Menu/text_box.png'),640-150,360-25, batch=self.menuBatch,group=boxGroup)

self.play_text = pyglet.text.Label("Play", font_name="Arial", font_size=32, x=640, y=360, anchor_x='center', anchor_y='center', color=(255,255,255,255), batch=self.menuBatch,group=textGroup)

然后我只调用 self.menuBatch.draw()。我遇到的问题的图片是:

enter image description here

最佳答案

要使透明效果起作用,应在 OpenGL 中启用“混合”。

启用混合:

glEnable(GL_BLEND)                                  # transparency
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA) # transparency

这个完整的片段对我有用:

import pyglet
from pyglet.gl import *


# Pyglet Window stuff ---------------------------------------------------------
batch = pyglet.graphics.Batch() # holds all graphics
config = Config(sample_buffers=1, samples=4,depth_size=16, double_buffer=True, mouse_visible=False)
window = pyglet.window.Window(fullscreen=False, config=config)

glClearColor( 0, 100, 0, 255) # background color
glEnable(GL_LINE_SMOOTH)
glHint(GL_LINE_SMOOTH_HINT, GL_DONT_CARE)
glEnable(GL_BLEND) # transparency
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA) # transparency

play_text = pyglet.text.Label("Play", font_name="Arial", font_size=32, x=240, y=140, anchor_x='center', anchor_y='center', color=(255,0,255,255), batch=batch,group=None)
text_box = pyglet.sprite.Sprite(pyglet.image.load('text_box.png'),240-150,160-25, batch=batch,group=None)

@window.event
def draw(dt):
window.clear()
batch.draw()


if __name__ == "__main__":
pyglet.clock.schedule_interval(draw, 1.0/60)
pyglet.app.run()

screen

关于python - Pyglet文字背景不透明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44210785/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com