pyglet顶点列表未呈现(AMD驱动程序?)

时间:2012-02-20 22:26:07

标签: linux driver gpu pyglet amd-processor

我的机器显然不会在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文档。有人知道我需要什么样的设置,或者特定的驱动程序版本是否正常工作?

1 个答案:

答案 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)修复。