2013-07-07 116 views
4

我正在玩pyglet 1.2alpha-1和Python 3.3。我有以下(非常简单)的应用程序并不能找出我的问题是:使用Pyglet加载图像

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

我遇到了同样的错误,但我发现了什么条件产生它(但不是修复)。我正在运行Windows 7,Python 2.7.11,Pyglet 1.2.4。我有在Linux上运行的代码,这在Windows上破坏了。调试它,我终于发现,当一张照片比当时更大的时候(在任何一个方向上),它都被轰炸了。 (我的屏幕是1920x1080)。当我把图片缩小到1024x1024时,它运行良好。尽管如此,仍然试图找出Pyglet中发生了什么。 (切换到版本1.1.4不起作用)。 –

回答

2

的代码 - 包括在image.blit-运行对我罚款。我正在使用python 2.7.3,pyglet 1.1.4 代码没有问题。你可能会考虑暂时尝试其他python和pyglet版本(直到pyglet有一个新的稳定版本)

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,那么任何较大的图片都会引发异常。 (唯一的解决办法是,获得更好的系统)。