問題タブ [pyopengl]

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 投票する
0 に答える
157 参照

python - 実行時のpyopengl平均2つ以上のテクスチャ

実行時にいくつかの画像をブレンドし、それらをいくつかの単純なジオメトリに適用する pyopengl プログラムがあります。動作しますが、非常に遅く、私が知っているよりも遅くなります。次のコードは、実行時に image'n'_weight が変化する場所で使用するものです。

...

...

スピードアップするためにこれを行う方法を知っている人はいますか

更新: マルチ テクスチャとのブレンドを行う必要があることはほぼ確実です。

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

python - pyopengl テクスチャの明るさを変える

いくつかのポリゴンにバインドされた 2 つのテクスチャをレンダリングし、これを使用して結果を追加するプログラムがあります。

これはうまく機能しますが、ゲイン値のように、テクスチャを追加する前に各テクスチャの明るさを変更する方法が必要です。この値は実行時に変更する必要があるため、単純に明るさをテクスチャにベイクすることはできません。

また、プログラムの性質上、実行時までブレンドするテクスチャの数がわからないため、n 個のテクスチャで機能するソリューションが必要です。

誰も私がこれを行う方法を知っていますか?

0 投票する
0 に答える
654 参照

python - wxPython OpenGL コンテキストでのマルチサンプリングの有効化

私が書いている OpenGL プログラムでマルチサンプリングを有効にしようとしています。アプリケーションにはかなりの量の GUI が必要になるため、PyGame (SDL) の代わりに wxPython (あまり詳しくない) を使用しています。

メインの GLCanvas にはハードウェア マルチサンプリングが本当に必要です。これは、wx の C++ バージョンでは可能な境界線であることを認識しています。たとえば、wxWidgets OpenGL プログラムのマルチサンプリングを有効にする方法は? . ただし、同様のことを試みましたが、 wx Python では機能しませんでした。

それで、私が知りたいのは、マルチサンプリングは wxPython でも可能ですか?

私がすでに考えているアイデア:

  • 代わりに、wx.Frame 内で PyGame コンテキストを使用してください。SDL のハードウェア マルチサンプリングを使用します。これが実際に機能するかどうかはわかりません。IIRC では、SDL OpenGL コンテキストのサイズを変更すると、そのコンテンツが破壊されます。これは、このアプリケーションでは多少問題になります。それでも 。. . 活躍できそうです。
  • より高い解像度の FBO を使用してレンダリングしてから、マルチサンプリングでダウンサンプリングします。これ 。. . 動作します。しかし、スーパーサンプリングはマルチサンプリングよりもはるかに遅く、この手法は GL_LINE のようなものにはうまく機能しません。私はすでにこの解決策を試しました。
  • マルチサンプリング レンダー ターゲットで FBO を使用します。これには多くの変更が伴い、システム間の移植性が制限されます。
  • 理想的には、wxPython の組み込みサポートがあればそれを使用します。

ありがとう、
イアン

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

python - PyOpenGL、Pygame、およびシェーダーが連携していないようです

私は最新の OpenGL プログラミングに関するこの優れたチュートリアルに取り組んでおり、PyOpenGL と pygame で動作するようにゆっくりと適応させています。ただし、遠近法ジオメトリを操作するための「些細な」例を取得するのに最も苦労しています。コードは次のとおりです。

私の理解に基づいて、画面の右上の象限を覆うために赤い四角形を取得する必要がありますが、私が行っていることは完全に灰色の画面に影響を与えないようです. 何が間違っているかについての洞察は大歓迎です!

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

opengl - OpenGL GLSL サンプラーは常に 0.0 から 1.0 までの浮動小数点数を返しますか?

いくつかの浮動小数点 RGBA テクスチャを作成しました...

次に、シェーダー プログラムでレンダリング/サンプルを交互にダブル バッファーします。

...

...

...

sample.r1.1 より大きいかどうかのチェックに注意してください。これは決して起こりません。フラグメント シェーダーの呼び出しtexture2Dまたは出力によって、sample.rgb の値が [0.0..1.0] にクランプされているようです。それでも、私の理解では、テクスチャ自体には完全な浮動小数点型が含まれています。

このクランプを回避する方法はありますか?

アップデート:

以下の手順に従って、glTexImage2D()GL_RGBA32F_ARB を使用するように呼び出しを修正しましたが、サンプラーから 1.0 より大きい値を取得できません。

更新 2:

テクスチャを 1.0 より大きい値に初期化しようとしたところ、うまくいきました! texture2d()初期値 > 1.0 を返します。これはおそらく、問題がフラグメント シェーダーにあり、テクスチャに書き込んでいるということでしょうか?

更新 3:

シェーダーを変更してみましたが、これは機能します:

...

カスタムの変化を使用すると機能するのに、組み込みの変化する gl_FrontColor/gl_Color を使用すると機能しないのはなぜですか?

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

python - このコードが私のテクスチャをpyopenGLで表示しないのはなぜですか

私はマルチパステクスチャリングを機能させようとしていますが、今は簡単なテクスチャリングを機能させることができます。次のコードを使用して、誰でも何が起こっているのかを知ることができます。この例では、ポリをテクスチャではなく白で示しています。

...。

...。

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

python - pyopenglがマルチパステクスチャブレンディングモードを設定

私はマルチテクスチャリングを機能させようとしており、これまでにこの関数を使用してロードする無数のテクスチャを取得しています

そして、このコードで使用するテクスチャを設定できます

私の最初の試みはこれでした:

だから私はポリゴンを2回レンダリングし、毎回異なるテクスチャを選択します。レンダーで最後に選択したテクスチャを確認します。glEnable(GL_BLEND) を追加しようとしましたが、何もしないようです。

私がやりたいのは、2つのパスのピクセルを一緒に追加することです

これについてどうすればいいですか?

0 投票する
3 に答える
2820 参照

python - GLSL によるテクスチャリング (PyOpenGL および Pygame)

Python で固定関数パイプラインが遅いことに不満を感じた後、ゲームの視差背景を描画するためにシェーダーを調べ始めました。ただし、どの頂点が描画されているかをテクスチャリングする簡単な方法が見つかりません。

私は現在、頂点の配列を持つ PyOpenGL Vertex Buffer Object を持っています。それぞれは次のようになっています: [x, y, z, texX, texY, texID]

これらを getAttribLocation/glEnableVertexAttribArray でシェーダーに渡しています。シェーダーは現在コンパイルされていないため、機能するかどうかはわかりませんが、おそらくひどいテクスチャ コードを追加する前は、色付きの頂点で問題なく機能していました。

私が欲しいのは、複数のテクスチャを持つシェーダーでテクスチャ モデルを描画することですが、モデルはフラットな背景です。これは大きな (1600x800 程度の) 画像で、256x256 のテクスチャとクワッド ポリゴンに分割されています。(副次的な質問: ポリゴンのビットがオフスクリーンになるように、より小さなポリゴンを使用する方が良いですか、それとも、テクスチャ バインディングが少なくなるように大きなポリゴンを使用する方がよいでしょうか?)

複数の関連するテクスチャなので、CPU 上のチャンクごとにテクスチャをバインドする必要はなく、すべてシェーダーで処理したいので、頂点データと一緒にテクスチャ データを送信するのが最適だと考えたのですが、うまくいきません。仕事。

頂点シェーダーとフラグメント シェーダーが相互作用して、異なるテクスチャを持つ複数のポリゴンを作成する簡単な例を教えてください。

編集: シェーダー、vbo などはこちら: http://pastebin.com/3LaYiyvhシェーダーはコンパイルされるようになりましたが、三角形は見えません。

EDITEDIT:そこに着きました!最終的に何がクラックしたのかはわかりませんが、プログラムは次のとおり です。確信はないけど。また、描画中にテクスチャを交換するため、大きな背景を小さなチャンクに分割して描画することはお勧めできません。無駄なスペースのある大きなテクスチャは問題ありませんが、アトラスの方が優れています!

0 投票する
3 に答える
11598 参照

opengl - OpenGL でテクスチャに含まれるミップマップの数

最初にテクスチャを作成したのは私であり、ロード/生成したミップマップの数を完全に把握している必要があります。私はユニットテストのためにこれをやっています。glGetTexParameterこれを見つけるためのパラメーターはないようです。私が来た最も近いものは次のようなものです:

とにかく、glGetTexLevelParameter()NVidia GPU を使用している場合、存在しないミップマップに対して幅 0 を返しますが、Mesa では をGL_INVALID_VALUE返します

テクスチャに取り込んだミップマップ レベルを確認するにはどうすればよいですか?

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

pyopengl - ロガー「OpenGL.arrays.arraydatatype」のハンドラーが見つかりませんでした

Windows 7マシンでは、pyinstallerを使用してPythonプログラムをexeに変換しました。

ただし、exeを実行しようとすると、上記のエラーが発生しました。

これを解決する方法について何かアイデアはありますか?

ありがとう