Python 使用pygame 2.0.x设置gamma
我创建了一个游戏,我想设置屏幕的gamma。例如:Python 使用pygame 2.0.x设置gamma,python,python-3.x,pygame,Python,Python 3.x,Pygame,我创建了一个游戏,我想设置屏幕的gamma。例如: import pygame from pygame.locals import * pygame.init() screen = pygame.display.set_mode((600, 450)) font = pygame.font.SysFont('consolas', 25) red = 1 green = 1 blue = 1 while True: for event in pygame.event.get()
import pygame
from pygame.locals import *
pygame.init()
screen = pygame.display.set_mode((600, 450))
font = pygame.font.SysFont('consolas', 25)
red = 1
green = 1
blue = 1
while True:
for event in pygame.event.get():
if event.type == QUIT:
pygame.quit()
exit()
screen.fill((20, 20, 20))
# draw colored zones
for x in range(600):
pygame.draw.line(screen, (x * 255 / 600, 0, 0), (x, 0), (x, 100))
for x in range(600):
pygame.draw.line(screen, (0, x * 255 / 600, 0), (x, 100), (x, 200))
for x in range(600):
pygame.draw.line(screen, (0, 0, x * 255 / 600), (x, 200), (x, 300))
if pygame.mouse.get_pressed()[0]:
x, y = pygame.mouse.get_pos()
if y < 100:
red = x / 300
pygame.display.set_gamma(red, green, blue)
elif y < 200:
green = x / 300
pygame.display.set_gamma(red, green, blue)
elif y < 300:
blue = x / 300
pygame.display.set_gamma(red, green, blue)
text = 'pygame.display.set_gamma(%.2f, %.2f, %.2f)' % (red, green, blue)
text = font.render(text, 0, (255, 255, 255), True)
screen.blit(text, (10, 440 - text.get_height())) # render the text
pygame.display.flip()
导入pygame
从pygame.locals导入*
pygame.init()
screen=pygame.display.set_模式((600450))
font=pygame.font.SysFont('consolas',25)
红色=1
绿色=1
蓝色=1
尽管如此:
对于pygame.event.get()中的事件:
如果event.type==退出:
pygame.quit()
退出()
屏幕填充((20,20,20))
#绘制彩色区域
对于范围(600)内的x:
pygame.draw.line(屏幕,(x*255/600,0,0)、(x,0)、(x,100))
对于范围(600)内的x:
pygame.draw.line(屏幕,(0,x*255/600,0),(x,100),(x,200))
对于范围(600)内的x:
pygame.draw.line(屏幕,(0,0,x*255/600),(x,200),(x,300))
如果pygame.mouse.get_按下()[0]:
x、 y=pygame.mouse.get_pos()
如果y<100:
红色=x/300
pygame.display.set_gamma(红色、绿色、蓝色)
elif y<200:
绿色=x/300
pygame.display.set_gamma(红色、绿色、蓝色)
如果y<300:
蓝色=x/300
pygame.display.set_gamma(红色、绿色、蓝色)
text='pygame.display.set_gamma(%.2f、%.2f、%.2f)'(红色、绿色、蓝色)
text=font.render(text,0,(255,255,255),True)
blit(text,(10440-text.get_height())#渲染文本
pygame.display.flip()
但是,当我将pygame版本更新到2.0.0.dev6时,gamma校正不起作用,我看到了难看的颜色,蓝色和黄色不规则地闪烁
我在Windows10上
编辑1
经过调查,绿色似乎不由set\u gamma
功能处理。当我更改颜色(0,x*255/600,0)
中的x值时,什么都不会发生
编辑2
我现在有了最新的pygame
版本-现在几乎什么也没发生。根据文件, 并非所有系统和硬件都支持gamma斜坡 好的!也许我的电脑不能处理这个功能!但是: 如果函数成功,它将返回True 我得到了
真值
,即使没有任何东西能像预期的那样工作。有人能清楚地看到这些乱七八糟的bug吗?我帮助开发pygame 谢谢你的报道,我相信这是pygame中的一个bug 我可以复制你说的所有内容,除了display.set_gamma()返回
True
即使成功了。对我来说,它总是返回False
除此之外,我在pygame源代码中找到了bug的来源,并提交了一个补丁来修复它
假设这被合并,这个bug将在PyGame2.0.2中修复
但是您可能希望您的代码尽快工作,因此您有两个选择
- 暂时降级到pygame 1.9.6,然后在发布后升级到2.0.2
- 在windows上从源代码构建pygame(有点困难)
- 如果您使用的是Python3.8 64位,我可以向您发送一个pygame 2.0.2.dev1的
文件,供pip从中安装wheel
编辑:我刚刚意识到你在八月份发布了这个。对不起,这花了这么长时间。如果您将来遇到这样的问题,github上的pygame问题跟踪程序就是报告这些信息的地方:如果您确实以正确的方式更新了pygame,那么就不应该有旧的pygame版本供您保留或删除。正如上面所说:
安装pygame的最佳方法是使用pip工具(这是python用来安装软件包的工具)。
相应地,更新pygame的预期方法是使用--upgrade
标志来升级pip
。我现在有了最新的pygame版本。现在,这个错误已经修复,但是。。。当我调用pygame.display.set\u gamma
时,不会发生任何事情。正如关于设置\u gamma
所述,1.0是正常的gamma值。所以它不像我想的那样在0到255之间。但是什么都没有发生,没有任何价值。它对你有什么作用?问题是否来自我的计算机?如果在绘制线之前设置gamma会发生什么?另外,你到底期望事物在视觉上发生怎样的变化?另外,你应该问一个新问题。我想这可以帮助我:“不是所有的系统和硬件都支持gamma渐变”-edit:但是“如果函数成功,它将返回True。”>它除了我得到True之外什么都不做?