2013-07-07 148 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,那麼任何較大的圖片都會引發異常。 (唯一的解決辦法是,獲得更好的系統)。