問題タブ [pyglet]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
4 に答える
3320 参照

python - numpy 配列が pyglet で正しく表示されない

pyglet で numpy 配列を表示する際に問題があります。私が使用した非常によく似たトピック ( pyglet で numpy 配列を表示する方法は? ) を見つけました。配列をグレースケールで表示したいのですが、pyglet はそれを色で表示します。画像を参照してください: http://i.stack.imgur.com/pL6Yr.jpg

代わりに配列を保存してロードすると機能します(ただし、非常に遅くなります):

そして、私が欲しかったものを手に入れました:

i.stack.imgur.com/FCY1v.jpg

最初のコード例で間違いを見つけることができません:(

編集:

ご回答ありがとうございます。Bago からのヒントを使用して、これをコード化して動作させました :) 実際、行列をグレースケールで表示したいだけなので、nfirvine の提案は合理的です。

0 投票する
2 に答える
355 参照

python - Python、Pyglet、win32 API、COM:IStream :: Releaseを呼び出す方法は、私が持っているのがポインターだけの場合ですか?

Pygletのメモリリークを修正しようとしています。ole32.CreateStreamOnHGlobalによって割り当てられたIStreamオブジェクトが解放されないため、win32でのみ発生します。

ここをクリックすると、Pygletトラッカーで問題#552を見つけることができます。

ソースコードでわかるように、ストリームのリリースはTODOアイテムとして省略されています。

行204のコメントには、私の質問も含まれています。IUnknown:: Release onstreamを呼び出す方法は?

ストリームは142行目に割り当てられます。pygletは外部の依存関係に依存していないため、pywin32を使用できないと思います。ストリームオブジェクトについてPython側で知っているのは、gdiplus.pyの53行目だけです。

だから、これが私の背景です-状況と制限。さて、私の質問-もう一度。ポインタしかない場合、IStream :: Releaseを呼び出すにはどうすればよいですか?5秒ごとに異なる画像を読み込むという長時間のプロセスがありますが、それは私にとって問題のようです。私はC/C ++を理解でき、プログラミングも時々行いますが、決してwin32apiの専門家ではありません。ヘルプ!

0 投票する
1 に答える
529 参照

linux - pyglet 頂点リストがレンダリングされない (AMD ドライバー?)

私のマシンはどうやら pyglet で頂点リストを描画しません。次のコードは、ウィンドウ内の異なる位置に 2 つの同一の形状をレンダリングします。1 つは頂点リストを使用し、もう 1 つは直線を使用しdraw()ます。直接描画されたものは正常にレンダリングされますが、頂点リストはまったくレンダリングされません。

これは Ubuntu Lucid の pyglet 1.1.2 で、AMD Radeon HD 6450 カードと最新の Catalyst 12.1 ドライバーを使用しています。このコードは 3 年前にいくつかの NVIDIA カードで動作し、pyglet のドキュメントからほぼそのままなので、ドライバーなどと関係があるに違いないと思います。どの設定をいじる必要があるか、または特定のドライバーのバージョンが正しく動作するかどうかを知っている人はいますか?

0 投票する
1 に答える
952 参照

python - 実行時の変数の値に応じて異なるビデオ ファイルを再生する

4 つのビデオ ファイル (映画のさまざまなシーン) があります。

プレーヤーを実行すると再生される開始シーンがあります。そのシーンが終了する前に、ビデオ プレーヤーが外部ファイルから int 値 (0 ~ 100) を読み取り (すべて実行時に行われます)、その int 値に応じて、次に再生するシーンを決定する必要があるとします。

擬似例:

その変数に応じて、実行時にビデオソースを変更するにはどうすればよいですか?

ビデオ ファイルの形式 (Avi、mp4 など) は気にしません。

この問題にアプローチする方法がわかりません。pygletGStreamerなど、これを達成する可能性があるものを探しましたが、明確な解決策が見つかりませんでした。

編集: pyglet を使用した基本的なプレーヤーとビデオプレーヤーがあり、次のコードを使用して変数に依存せずにビデオを再生できました:

これについてどうすればいいですか?正しい方向へのガイダンスおよび/またはいくつかのサンプルコードは高く評価されます。

前もって感謝します。

0 投票する
1 に答える
542 参照

python - pyglet.graphics: ctypes 配列作成時の IndexError

私はピグレットで小さなゲームを開発しています。もちろん、目玉の 1 つは、色付きの長方形を描くことです。私は最初、メモリ内に画像を作成してblit()ing することでこれを行いましたが、うまくいきました。いかに醜く、遠回しで非効率的であるかに気付いた後 (はい、私はプロファイリングしました -ColorRect.draw()かなりの時間がかかり、この変更により 10 倍効率的になりました) これが代わりに頂点リストの作成を開始しましたpyglet.graphics.Batch。例)。それ以来、いくつかの低レベルの OpenGL コードで奇妙な例外が発生しましたが、その原因を見つけられなかったり、確実に再現できなかったりしました。

ゲームプレイ イベントとの明確な関係はありません。たとえば、直前に特別なことが起こらなかったか、常に見逃しています。エラーはイベント ループのどこかで発生するため、どの位置更新が原因であるかを簡単に突き止めることができません。正直なところ、私は困惑しています。したがって、私は発見したことをブレインダンプし、ある種の超能力者に期待します.

私はWindows 7 32ビット(すぐにUbuntu 11.10で試してみるかもしれません)でPython 3.2.2を試してみました. 2to3 を自動的に実行しないため、インストールが難しくなりますが、同様に py3k に対応しているように見えます)。次回はおそらく最新の mercurial バージョンに更新する予定ですが、それはほんの数回のコミットであり、変更はまったく無関係のようです。

完全なトレースバック (一部のパスは原則として検閲されていますが、独自の virtualenv にあることに注意してください):

事後分析 (FPS が 60 から 7 に低下したため、実行不可能になるまで積極的にコードを実行する) を実行すると、次のようになりpdbます。

  • buffersint のリストです。これらが何を表しているのか、どこから来たのかはわかりませんが、self.object_space._doomed_textures(where selfis a window object) と呼ばれるリストから取得されます。関連するコメントには、このコード ブロックは、削除予定のテクスチャを解放すると書かれています。どこでもテクスチャを明示的に使用しているとは思いませんが、pyglet がフードの下で何をしているのかは誰にもわかりません。これらの整数は、ID または破棄されるテクスチャの一部であると想定しています。
  • gl.GLuintのエイリアスですctypes.c_ulong。したがって、同じ長さと内容(gl.GLuint * len(buffers))(*buffers)の配列を作成しますulong
  • pdbエラーやデータの破損なしに、プロンプトでまったく同じ式を評価できます。

ctypes を使用した独立した実験 (virtualenv の外部で、pyglet をインポートせずに) はIndexError、配列コンストラクターに与えられた引数が多すぎる場合に発生することを示しています。これは意味がありません。実験と論理の両方が、長さと引数の数が常に一致する必要があることを示唆しています。

  1. この例外が発生する可能性がある他のケースはありますか? これは pyglet のバグでしょうか、それともライブラリを誤用して関連する警告を見逃したのでしょうか?
  2. 頂点リストを作成および維持するコードは、これをデバッグするのに役立ちますか? おそらく何か問題があります。私はすでにそれをじっと見つめていましたが、私は の経験がほとんどないのでpyglet.graphics、これは限られた用途でした. ColorRectコードを見たい場合は、コメントを残してください。
  3. これを引き起こす可能性のある他のアイデアはありますか?
0 投票する
5 に答える
2138 参照

python - Python - 明らかに停滞しているモジュールに時間を費やす価値はありますか?

それを素早く汚いものにするために - 私は Pyglet を熱心に見ている初心者のプログラマーです。私自身の経験の浅い目で見ても、獣である PyGame のようなものとは異なり、使用するのに本当にクリーンでフレンドリーなモジュールのように見えます。

でも。PyGame は、多くの人々によって常に使用、更新、再利用されており、かなりの支持を得ているようです。Pyglet は 2010 年 1 月以来更新されていません。ほとんどの芸術作品は決して完成せず、放置されているだけです - しかし、2 年経った今でも v 1.1.4 のままなのは厄介なようです。

Pyglet と PyGame について具体的に質問しているかもしれませんが、そうではありません.または隅に押し込まれ、実際には関係ありません。このような放棄されたプロジェクトは、時間と頭脳空間への投資に値しないのでしょうか?

0 投票する
1 に答える
2363 参照

pyglet - ピグレットで頂点リストを使用するには?

Pyglet で複数のオブジェクトを生成できるスクリプトを作成しています。この例 (以下のリンクを参照) では、3D 空間に 2 つのピラミッドがありますが、すべての三角形がすべてのフレームで再計算されます。私の目的は、多数のピラミッドが飛び交う群れを作ることですが、頂点リストをバッチで実装する方法がわかりません。(これが最速の方法であると仮定します)。

たとえば、インデックスを作成する必要がありますか? (batch.add_indexed(...) )

標準は次のようです。

次に、頂点をバッチ 1 に追加します。そして最後に:

では、ピラミッドが頂点リストに追加される中間ステップをどのように行うのでしょうか? 最後の質問: 複数のバッチを使用することをお勧めするのはいつですか?

ありがとうございました!apfz

http://www.2shared.com/file/iXq7AOvg/pyramid_move.html

0 投票する
2 に答える
2761 参照

python - pygletでスプライトを描画できません()

どういうわけか、ピグレットにスプライトを描画させることができません。これが私のコードです:

これで、バッチを描画すると、テキストラベルが正しく表示されます。ウィンドウに「DING」が表示されます。ただし、画像「hextile.png」は表示されていません。スプライトを個別に描画してみましたが、それもうまくいきませんでした。ただし、画像のブリット化(コメント行に示されている)は問題なく機能しているように見えますが、これは明らかに、私がここで求めている機能ではありません。私はこれを理解することはできません。私は何が欠けていますか?

0 投票する
1 に答える
1144 参照

python - PythonでVBOを正しく削除するには?

Pythonで頂点バッファオブジェクトを正しく削除する方法を知りたいと思っていました。次のように VBO を生成します。

ときどき、VBO を削除して、代わりに新しい VBO を作成する必要があります。VBOを削除する正しい方法は何だろうと思っていましたか? 次の 2 つの方法を試しましたが、どちらが正しいかわかりません (Python はどちらの方法でも文句を言いません)。

正しい呼び方は?また、VBO を削除すると、GPU のメモリも解放されますか?

0 投票する
1 に答える
3781 参照

python - glGetFloatv を使用して pyglet でモデルビュー マトリックスを取得する

私は pyglet を使用して Python で 3D ビジュアライゼーションを行っています。モデルビューと射影行列を取得してピッキングを行う必要があります。以下を使用してウィンドウを定義します。

次に、すべてのウィンドウ イベントを定義します。

クリックすると印刷されます...

クラッシュします。GL_MODELVIEW_MATRIX で glGetFloatv を呼び出すと、16 個の値が返されるはずですが、それを処理する方法が正確にはわかりません。= GLfloat*16 を定義しようとしましたが、次のエラーが発生します。

これらの行列を取得するにはどうすればよいですか?