Loading an image using Pyglet
我在玩pyglet 1.2alpha-1和Python 3.3。 我有以下(极其简单)的应用程序,无法弄清楚我的问题是什么:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | 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)注释掉,我的文本标签就会出现。 但是,如果我尝试显示图像,程序将崩溃并显示以下错误:
1 2 3 | 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。
该代码-包括image.blit-对我来说运行正常。 我正在使用python 2.7.3,pyglet 1.1.4
代码没有错。 您可能会暂时考虑尝试其他python和pyglet版本(直到pyglet具有新的稳定版本)
这不是"修复程序",但至少可以确定它是否可修复(我的不是)。 (来自Pyglet邮件组。)
您可以通过运行以下代码(Python 3+)来验证系统是否甚至不支持大于1024的纹理:
1 2 3 4 5 6 | 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,则任何较大的图片都会引发异常。 (唯一的解决方法是,获得一个更好的系统)。