問題タブ [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.
python - ピグレットスプライト/テクスチャの問題:左下から伸びています
ノートブックの1つにあるpygletに問題があります。私は比較的複雑な2Dゲームに取り組んでいますが、想像できる最もミニマルなピグレットアプリケーションでも発生します。
次のようなボールの画像が表示されます。
しかし、それが描いているのは、どういうわけか引き伸ばされた画像です。
交換ball.draw()
するball_img.blit(0, 0, 0)
と期待通りにレンダリングされます。
ノートブックは、Linux(Intel統合グラフィックス)を実行する小さなThinkpadX40です。
このような動作はどのように発生する可能性がありますか、またはこれを引き起こす可能性が高いのは何ですか?
python-3.x - pyGame または pyglet が python 3 をサポートしないのはなぜですか?
pyglet や pyGame など、Python 用のさまざまなゲーム デザイン モジュールを調べています。これらは両方とも python 2 とのみ互換性があるように見えることに気付きました。python 3 が最新バージョンであるのを見て、これはなぜですか? 私のpythonの経験はpython 3でしたので、python 3ゲーム開発用の優れたフレームワーク/モジュールはありますか? それとも、python 2 を学習して pyglet または pyGame を使用したほうがよいでしょうか?
編集: Mac で pyGame を使用します。ダウンロード ページhttp://www.pygame.org/download.shtmlには、py2.6、py2.5、および py2.4 のリンクしかありません。このため、python 3 と互換性がないと思われます。
python - 3Dモデルをpygletにインポートすることは可能ですか?
私と友人は、pygletライブラリを使用してPythonで記述されたopenGLゲームに取り組んでいます。これで、マップの描画コードが完成し、マップに表示されるいくつかのモデルをインポートする必要があります。いくつかの古いSVNコードを除いて、Pygletはそれをサポートしていないようです(私はあまり運がなくて少しググった)。3Dモデルをインポートできる優れたPythonスクリプト/ライブラリを知っている人はいますか?
python - pyglet でバッチを作成しようとすると、「アンパックする値が多すぎます」というエラーが表示される
バッチを pyglet で動作させようとしてきましたが、pyglet/graphics/__init__.py
ファイルから「unpack する値が多すぎます」というエラー メッセージが表示されて完全に混乱しています。私の推測では、ジオメトリをバッチに追加するときに構文的に何か間違ったことをしていると思います。
エラーを作成する重要な部分にコードを切り詰めました。
python - pyglet を使用してバッチでパフォーマンスを向上させるにはどうすればよいですか?
pyglet ライブラリを使用してバッチを作成するコードがいくつかあります。完全にロードすると、全体で約 10,000 個のクワッドが含まれます。シーン全体 (完全に静的なシーン) をレンダリングするスクリプトを実行すると、3FPS が得られます。シーン レンダラーに使用したプロトタイプでは、遅くてずさんな python コードを使用してマップを構築していましたが、これはたまたま同じシーンで 3 FPS で実行されました。pyglet のバッチは C++ を使用して管理されているため、バッチが 3FPS で描画される原因となる明らかな何かが欠けているという厄介な感覚があります。
これは私のシーンの初期化コードです:
これは、各フレームを実行してシーンをレンダリングするコードです。
python - ピグレットを使用した putpixel
私はピグレットが初めてです。on_draw
反復ごとにピクセルを黒から白に変更したいと思います。したがって、1000 回の反復の後、ウィンドウには正確に 1000 個の白いピクセルが存在するはずです。ただし、そのために 1000 回の描画操作を呼び出すことは避けたいと思いon_draw
ます。だから私は画像を作成し、画像に RGB putpixel を実行し、画像を画面にブリットしたいと思います。どうやってやるの?pyglet のドキュメント、例、およびソース コードは、これに関してはあまり役に立ちません。
python - 基本的な openGL、頂点バッファー、pyglet
編集: rotoglup は私のコードで問題を発見し、削除したシェーダーを追加すると解決策が完成しました。正しいコード (シェーダーを使用) については、以下の私の回答を参照してください。
こんにちは、みんな !
このチュートリアルから最新の OpenGL の基本を学ぼうとしています。
ただし、C++ の代わりに python/pyglet で実行したいと思います。私は、pyglet が低レベルの OpenGL の多くを抽象化できることを知っています。ただし、抽象化のレイヤーの背後にそれらを隠すことに進む前に、いくつかの基本を理解したいと思います。
私の問題は非常に単純です。以下のコードは、私が期待している 3 つのポイントではなく、1 つのポイントしか描画しません。私のコードは、私が知る限り、チュートリアルの C++ と同じですが、頂点シェーダーとフラグメント シェーダー ( Python のgletoolsを介して行われる) の削除を除いて、私の問題に違いはないようです。
物事を一点に単純化すると、私が理解できない動作が示され (最初の座標だけが何かに影響を与えるように見えます)、pyglet、OpenGL、または一般的に3Dでさえ:p
関連するコードは次のとおりです。
python - OpenGL の基本: glDrawElements をオブジェクトごとに 1 回呼び出す
OpenGL の基本の探求 (この質問を参照) から続けて、OpenGL でシーンを描画する基本原則を理解しようとしています。
すべての方向に n 回繰り返される単純な立方体をレンダリングしようとしています。
私の方法ではひどいパフォーマンスが得られるようです: 1000 個のキューブでパフォーマンスが 50 fps 未満になります (QuadroFX 1800 では、おおよそ GeForce 9600GT です)。
これらの立方体を描画するための私の方法は次のとおりです。
一度行った:
- モデル空間の立方体の頂点を含む頂点バッファーと配列バッファーをセットアップする
- 12 個の三角形として描画するために立方体にインデックスを付ける配列バッファーを設定します
フレームごとに行われます:
- すべての立方体を一度に移動するために頂点シェーダーで使用される均一な値を更新します
キューブごと、フレームごとに行われます。
- 各立方体をその位置に移動するために頂点シェーダーによって使用される均一な値を更新します
- glDrawElements を呼び出して、配置された立方体を描画します
これは正気の方法ですか?そうでない場合、どうすればこのようなことを行うことができますか? glUniform、glDrawElements、またはその両方への呼び出しを最小限に抑える必要があると思いますが、その方法がわかりません。
私の小さなテストの完全なコード: ( gletoolsと pygletに依存)
私の初期化コード (少なくとも) が本当に醜いことは承知しています。私は現在、各フレームのレンダリング コードに関心があります。後で頂点バッファーなどを作成するために、もう少し狂気の少ないコードに移行します。
python - Pyglet でスクリーンショットを撮る [Fix'd]
pyglet docs で、次のことがわかりました。
次の例は、アプリケーション ウィンドウのスクリーンショットを取得する方法を示しています。
pyglet.image.get_buffer_manager().get_color_buffer().save('screenshot.png')
ただし、これを使用すると、マウスをクリックするまですべてが停止します。Pyglet で画面の内容を取得する、または強制的にイベント ループに戻す別の方法はありますか?
編集:実際には短い遅延(0.2秒〜)があることがわかりましたが、他には何もありません。実はpygletを止めるF10キーと関係があります。>_>
公開中の報奨金があるため、閉鎖または削除できません。
release - マウスダウンとマウスホールドの区別
私は現在、pyglet用の小さなグラフィックライブラリに取り組んでいます。このモジュールは、完全に線で構成されるベクターグラフィックを作成するために使用されます。
その開発で、クリックしてドラッグ(およびポイントを移動)するとon_mouse_pressイベントが発生し、最後のアクティブなリンクとドラッグしようとしているポイントの間に新しいリンクが作成されるという問題が発生しました。
ポイント間のリンクの作成が遅く感じられるように、これを修正する方法は考えられないようです。代わりに、ポイントをリンクする前にマウスがドラッグされたかどうかを判断できるように、on_mouse_releaseにリンクを作成しています。
遅れて見えることなくこれを機能させる方法について、他の誰かが明るいアイデアを持っていますか?
編集:Pythonでpygletを使用してimを明確にする