我的机器显然不会在pyglet中绘制顶点列表。以下代码在窗口中的不同位置呈现两个相同的形状,一个使用顶点列表,另一个使用直线draw()
。直接绘制的那个渲染得很好,而顶点列表根本不渲染。
import pyglet
window = pyglet.window.Window()
w, h = window.get_size()
vl = pyglet.graphics.vertex_list( 4,
('v2i', (100,0, 100,h, 200,h, 200,0)),
('c3B', (255,255,255, 255,0,0,
0,255,0, 0,0,255)) )
@window.event
def on_draw():
window.clear()
vl.draw( pyglet.gl.GL_QUADS )
pyglet.graphics.draw( 4, pyglet.gl.GL_QUADS,
('v2i', (300,0, 300,h, 400,h, 400,0)),
('c3B', (255,255,255, 255,0,0,
0,255,0, 0,0,255)) )
pyglet.app.run()
这是Ubuntu Lucid中的pyglet 1.1.2,使用AMD Radeon HD 6450卡和最新的Catalyst 12.1驱动程序。我想它必须与驱动程序等有关,因为这段代码在三年前在几张NVIDIA显卡上工作,而且几乎直接来自pyglet文档。有人知道我需要什么样的设置,或者特定的驱动程序版本是否正常工作?
答案 0 :(得分:1)
我似乎在使用Radeon HD 4870在Windows 7上运行Catalyst 12.2时遇到了同样的问题。在我从旧的Geforce 8800 GTX转移到此卡后,我的一些早期代码也停止了部分工作,特别是fps_counter和标签绘图仍然有效,绘制批次没有。
在我将视频驱动程序降级到Catalyst 11.5之后,问题就消失了(包括上面的代码段和我之前的代码)。
更高版本的Catalyst可能会起作用。我首先尝试了这个,因为它被认为在某种程度上适当地工作:http://groups.google.com/group/pyglet-users/msg/ae317c37ce54c107
更新:经过测试的Catalyst 11.12(最新的11.x版本,视频驱动程序版本8.920.0.0000),问题已经恢复。
更新2:稍后进行一些测试,看起来这个问题在Catalyst 11.9(视频驱动程序8.892.0.0000)中开始出现。 Catalyst 11.8(视频驱动程序8.881.0.0000)按预期工作。
解决方法是在pyglet问题跟踪器上按照this comment使用v2f
而不是v2i
。
上次更新:此问题似乎已通过Catalyst 12.4(视频驱动程序8.961.0.0)修复。