2

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

4

1 回答 1

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 问题跟踪器上使用v2f而不是v2i按照此评论。

上次更新: Catalyst 12.4(视频驱动程序 8.961.0.0)似乎解决了这个问题。

于 2012-03-20T23:00:44.773 回答