我正在使用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(). 我遇到的问题是:
要使透明效果发挥作用,应在OpenGL中启用“混合”。在
要启用混合:
这个完整的片段对我很有用:
^{pr2}$我以前在为我的一个3D程序制作GUI时做过类似的事情。为了使事情变得非常简单,我首先在draw()调用之前关闭GL_DEPTH_TEST,然后在draw()调用之后重新启用GL_DEPTH_TEST。我相信之前的答案对他们有用的原因是因为他们一开始没有启用GL_DEPTH_测试。我创建了一个按钮类,你也可以使用它(需要注意的是,参数“pos”是按钮左下角的(x,y)坐标,而参数“dim”是按钮的(宽度、高度)尺寸。“texture_coords”参数引用按钮背景图像的纹理坐标。如果需要完整的图像,只需将其保留为默认值。其余的都是不言而喻的)。代码如下:
我希望这是有益的!在
~里克·鲍恩
相关问题 更多 >
编程相关推荐