2

私のマシンはどうやら pyglet で頂点リストを描画しません。次のコードは、ウィンドウ内の異なる位置に 2 つの同一の形状をレンダリングします。1 つは頂点リストを使用し、もう 1 つは直線を使用し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 ドライバーを使用しています。このコードは 3 年前にいくつかの NVIDIA カードで動作し、pyglet のドキュメントからほぼそのままなので、ドライバーなどと関係があるに違いないと思います。どの設定をいじる必要があるか、または特定のドライバーのバージョンが正しく動作するかどうかを知っている人はいますか?

4

1 に答える 1

1

Radeon HD4870を搭載したWindows7でCatalyst12.2を実行すると、同じ問題が発生するようです。以前のGeforce 8800 GTXからこのカードに移動した後、以前のコードの一部も部分的に機能しなくなりました。具体的には、fps_counterとラベルの描画は引き続き機能しました。 、バッチの描画はしませんでした。

ビデオドライバーをCatalyst11.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)は期待どおりに機能しました。

回避策は、pygletIssueTrackerのこのコメントの代わりに使用することv2fです。v2i

最終更新:この問題はCatalyst 12.4(ビデオドライバー8.961.0.0)で修正されたようです。

于 2012-03-20T23:00:44.773 に答える