【发布时间】:2020-04-01 22:47:06
【问题描述】:
我正在尝试为我使用 Pyglet 用 Python 编写的游戏制作关卡编辑器。我希望能够修改我放置的任何方块的黑暗度。因此,我在Block 类中添加了darkness 属性。这是那个类:
class Block:
def __init__(self, name, image, wall):
self.name = name
self.image = image
self.wall = wall
self.darkness = 0
def set_darkness(self, darkness):
self.darkness = darkness
def draw(self, x, y):
self.image.blit(x, y)
pyglet.graphics.draw(4, GL_QUADS, ('v2i', (x, y, x + block_width, y, x + block_width, y + block_height, x, y + block_width)), ('c4B', (0, 0, 0, self.darkness) * 4))
我试图通过在图像顶部绘制一个黑色矩形来使图像变暗,然后调整该矩形的透明度。然而,无论我在__init__ 中将self.darkness 设置为什么,矩形仍然是完全不透明的。
我尝试通过将此代码添加到我的程序顶部来启用与 pyglet.gl 的颜色混合:
from pyglet.gl import *
glEnable(GL_BLEND)
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA)
这并没有改变。我还尝试使用 Pyglet 的 SolidColorImagePattern 类创建一个黑色矩形,并将 alpha 通道设置为 self.darkness,但这也没有用。如何使这个矩形透明?
【问题讨论】:
-
你在哪里打电话给
glEnable(GL_BLEND)...?在申请开始时或draw()?