问题描述
我尝试将表面放大一点,所以尝试了openGL,并出现了显示openGL错误的错误
这是代码 https://pastebin.pl/view/8366ece3
我将展示重要的部分:
def main():
window = pg.display.set_mode((sw,sh))
gridlength = 35
level = 1
grid = drawgrid(gridlength + level)
samplechar = character(gridlength,grid)
mapgen(grid,gridlength,samplechar,level)
for i in grid:
print(*i)
run = True
while run:
for event in pg.event.get():
if event.type == pg.QUIT:
pg.quit()
quit()
elif event.type == pg.MOUSEBUTTONDOWN:
if event.button == 4:
glScaled(1.2,1.2,1.2);
elif event.button == 5:
glScaled(0.8,0.8,0.8);
和错误:
File "src/errorchecker.pyx",line 58,in OpenGL_accelerate.errorchecker._ErrorChecker.glCheckerror
OpenGL.error.GLError: GLError(
err = 1282,description = b'invalid operation',baSEOperation = glScaled,cArguments = (1.2,1.2)
)
解决方法
任何OpenGL语句的当前有效OpenGL Context。创建显示表面时,需要设置pygame.OPENGL
标志:
window = pg.display.set_mode((sw,sh))
window = pg.display.set_mode((sw,sh),pygame.DOUBLEBUF | pygame.OPENGL)
无论如何,glScale
仅适用于以OpenGL立即模式(glBegin
/glEnd
)绘制的几何,但不适用于 Sprites 或pygame绘制的几何功能。