我正在使用pyglet 1.2alpha-1和Python 3.3。我有以下(非常简单)的应用程序,无法弄清楚我的问题是什么:
import pyglet
window = pyglet.window.Window()
#image = pyglet.resource.image('img1.jpg')
image = pyglet.image.load('img1.jpg')
label = pyglet.text.Label('Hello, World!!',
font_name='Times New Roman',
font_size=36,
x=window.width//2, y=window.height//2,
anchor_x='center', anchor_y='center')
@window.event
def on_draw():
window.clear()
label.draw()
# image.blit(0,0)
pyglet.app.run()
使用上面的代码,只要image.blit(0,0)被注释掉,我的文本标签就会出现。但是,如果我尝试显示图像,程序崩溃时会出现以下错误:
File "C:\Python33\lib\site-packages\pyglet\gl\lib.py", line 105, in errcheck
raise GLException(msg)
pyglet.gl.lib.GLException: b'invalid value'
如果我尝试使用pyglet.resource.image而不是pyglet.image.load(图像和py文件在同一目录中),我也会得到上述错误。
任何人都知道如何解决这个问题?
我使用的是Python 3.3,pyglet 1.2alpha-1和Windows 8。
答案 0 :(得分:2)
代码 - 包括image.blit-对我来说很好。我正在使用python 2.7.3,pyglet 1.1.4 代码没有错。您可能会考虑暂时尝试其他python和pyglet版本(直到pyglet有一个新的稳定版本)
答案 1 :(得分:0)
这不是"修复",但至少可以确定它是否可以修复(我的不是)。 (来自Pyglet mailing group。)
通过运行此代码(Python 3 +),您可以验证系统是否支持大于1024的纹理:
from ctypes import c_long
from pyglet.gl import glGetIntegerv, GL_MAX_TEXTURE_SIZE
i = c_long()
glGetIntegerv(GL_MAX_TEXTURE_SIZE, i)
print (i) # output: c_long(1024) (or higher)
这是系统支持的最大纹理大小。如果它是1024,则任何较大的图片都会引发异常。 (唯一的解决方法是,获得更好的系统)。