問題タブ [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.
opengl - OpenGL のメモリ不足エラー、FBO が大きい
PyOpenGL/PyQt で大きな (2^13) フレームバッファ オブジェクトを作成すると、メモリ不足エラーが発生します。
与えます:
ただし、2^12 テクスチャまたは FBO にステップダウンすると、これはうまく機能します。
それぞれ約132 MB 268 MB (4 バイト * 8192^2)の 2 つのイメージ (FBO + texure) で1 GB のビデオ メモリがいっぱいになるのは、私には不合理に思えます。私は何が欠けていますか?
python - Linux上のpyopenglアプリケーションでbbfreezeを使用する
私はこのpyopenglアプリケーションを持っていて、bbfreezeでフリーズしようとしています。残念ながら、フリーズしたアプリを実行すると、次のエラーが発生します。
必要なバージョン情報は次のとおりです。
フリーズしているのと同じマシンで実行しようとしていますが、フリーズされていないアプリはそのマシンで正常に実行されます。
誰かがこの仕事をすることができましたか?または、おそらくデバッグガイダンスを提供しますか?
python - PyOpenGL:レンダリング...うーん...本当に何でも
私はしばらくの間、OpenGL で Python を使用するプロジェクトに取り組んできました。以前に同様の問題を投稿しましたが、その後、さらに調査を行い、非推奨でない機能に切り替えました。このチュートリアル(明らかにPythonバージョンに翻訳)に従って、私はこのコードで終わります:
Shaders/Mainv.glsl と Shaders/Mainf.glsl には以下が含まれます。
と:
それぞれ。
このコードは、(クリア カラー) GLUT ウィンドウを表示します。これは、何らかの理由で三角形がレンダリングされていないことを示唆しているようですが、その理由がわかりません。非推奨の関数を使用しないため、私が見逃していることとは異なることをしたかどうかはわかりません。
webgl - WebGLとPyOpenGL
私は今、WebGlで行われたいくつかの3DレンダリングをPyOpenGLに統合することを試みるように割り当てられています。私は両方のサンプルをいくつか持っていますが、最初からいくつかのジレンマに遭遇しました。頂点の数が非常に多いオブジェクトの1つでは、WebGLバージョンはPyOpenGLバージョンよりもはるかに優れたパフォーマンスを発揮します。これが正常なのか、それとも実装上の問題なのか、ほとんど興味があります。
よろしく、ボグダン
wxpython - wxGLCanvas を wxPanel に追加する問題
OpenGL を単純な wx アプリケーションに統合しようとしています。そこで、グーグルで検索して、wxGLCanvas を拡張し、機能する球体を描画するクラスの実例を見つけました。ただし、これはメイン フレームに追加されます。
しかし、側面にいくつかのボタンとメニューを配置したいので、キャンバスを追加しようとしましたが、これまでのところ成功していません。私のアプローチは次のとおりです。
したがって、ラベルとパネルは表示されますが、キャンバスは表示されません。何が欠けていますか?
よろしく、 ボグダン
python - PyOpenGLFPSの改善
PythonOpenGLプログラムのFPSレートを改善しようとしています。これまでのところ、私のアプローチは次のとおりです。
これで、displayTypeがGL_POINTSとGL_TRIANGLESの間で変更されます。現在、ポイントの場合は約28FPS、三角形の場合は約5〜6FPSしか取得していません。私はこの違いは正常ですか?FPSを改善するために何ができますか?
opengl - wxPython、OpenGL.GLUのインポート順序は重要ですか?
私は以下の状況です。GLCanvas、キャンバスといくつかのボタン、およびそれらを表示するフレームを含む wx.Panel を備えたモジュールがあります。今、私のインポートは次のとおりです。
OpenGL.GLU から gluPerspective をインポート OpenGL.GLUT から glutSolidSphere をインポート
これはうまくいきます。ただし、GLU からのインポートと GLUT python が「例外タイプ: EXC_BAD_ACCESS (SIGSEGV)」でクラッシュする前に、インポート wx.glcanvas とインポート wx を移動しようとすると。このフレームは私の開始フレームではないため、他のモジュールで import wx を呼び出す必要があり、これに到達するとクラッシュします。助言がありますか ?
編集
したがって、問題をよりよく説明するために。GLCanvas、GLPanel、および MainWindow を備えたモジュール 1 があります。
さて、私が先に進むと:
同じモジュールから、または以前に import wx を使用していないモジュールからこれを行うと、機能します。しかし、私のアプリケーションには、すべて wx を使用するログイン画面、構成画面などがあります。そのため、MainWin() を作成したいコードの時点で、前述のクラッシュが発生します。
基本的に私が言っているのは、GLPanel と myGLCanvas を以下から作成する必要があるということです。
そのため、wx は OpenGL インポートの前に来て、Python がクラッシュするだけです。
opengl - glDrawArrays と glDrawElements
わかりましたので、これを機能させるのにまだ苦労しています。私のコードの重要な部分は次のとおりです。
VBOについてこれまで読んだことから、ここに何か問題があるとは思いません。これで、頂点、法線 (まだ使用されていません)、三角形のインデックス バッファーができました。実際の抽選は次のとおりです。
glDrawArrays が機能するようになりました。しかし、三角形を描画する必要がある場合、bufferTriangles で定義した三角形は描画されません (drawArrays はインデックスを使用しないため、これは私が読んだものからは正常です? または、ここで間違っていますか? )。問題は、glDrawElements を使用しようとすると、すべてが次のようにクラッシュすることです。
今、私はここで何が欠けていますか? 私が理解できることから、おそらくどこかで悪いポインターを渡していますか? glDrawElements(type, 24, GL_UNSIGNED_INT, 0) を使用しようとしても、定義された三角形の数がはるかに多くてもクラッシュするので、サイズとは関係ないと思います。
よろしく、 ボグダン
編集: わかりましたので、追加のチェックを行ったので、現在の状況を以下に示します: len(triangles) を ADT.byteCount に変更しましたが、まだ解決策はありません。取得していたすべてのデータを確認したところ、次のようになりました。頂点配列には、法線配列と同様に、GL_Float タイプの ~60000 * 3 = 180000 頂点エントリが含まれています。< 62535 個の頂点しかないため、三角形には unsigned short を使用しています。したがって、len(三角形) は ~135000 です。glDrawElements(GL_TRIANGLES, len(self.triangles), GL_UNSIGNED_SHORTも変更しました, 0) .私もチェックしましたが、三角形配列からのすべてのデータは 0 から 62534 の間にあります。ここで他に何が間違っている可能性がありますか? ああ、glDrawElements(GL_POINTS, ...) はどのように機能しますか? ある種のインデックスも必要ですか?
EDIT2上記のコードを更新しました。そこで述べたように、描画要素がGL_POINTSを描画するようになりましたが、彼がどこでインデックスを取得するのかわかりませんか? それとも GL_POINTS の場合は必要ありませんか? GL_TRIANGLES の場合、glBindBufferARB(GL_ELEMENT_ARRAY_BUFFER_ARB, self.bufferTriangles) がコメント化された状態で、このように機能しますが、エレメント バッファーが 0 にバインドされた今、ここでどのような種類のインデックスが必要になるのでしょうか?! もう 1 つのことは、glDrawElements は glDrawArrays が行うすべてのポイントを描画しないということです。よりよく説明するには:
これは私のすべてのポイントを正しく描画します:
これは、glDrawArrays よりもはるかに少ないポイントを目に見えて描画するようです。ここで面白いことに、要素を描画するために 10 * len(self.vertices) のようなサイズを渡すと、すべてのポイントが描画されます (おそらく 2 回以上; これを確認できますか?)。
よろしく
EDIT3
配列に関するより正確な情報:
vertices - float の配列、
len(頂点) = 180000 byteCount(頂点) = 720000
三角形 - numpy.uint16 の配列
len(triangles) = 353439 byteCount(triangles) = 706878 min(triangles) = 0 max(triangles) = 59999 であるため、有効な頂点を指している必要があります
描画は次のように行われます。
glDrawElements(GL_TRIANGLES, len(self.triangles) , GL_UNSIGNED_SHORT, 0)
アップデート
これがどのように機能するかを理解したとき、要素の VBO をスキップしようとしましたが、次のようになりました。
これが機能し、すべての三角形を完全に描画するだけでなく、FPS も改善されました。VBO は高速であるべきではありませんか? そして、上記のアプローチが機能するのに、次のものがクラッシュする原因は何ですか。
opengl - fpsを改善しようとしているglColorPointer
最終的に、頂点に色を追加できるようになりました。しかし、今は FPS レートを改善したいと考えています。こちらが現状です。多数の頂点 (~200000) があり、それぞれが ~150 クラスのいずれかに属している可能性があります。各クラスは色によって異なります。現在、次のように頂点を描いています。
すべて正常に動作し、FPS は ~60 です。すべてのバッファは初期化時にのみ生成されます。しかし今では、各クラスを表す色が約 1 ミリ秒ごとに急速に変化します。これにより、色も変更されるため、描画ごとにカラー バッファーを再作成する必要があり、頂点が 200000 の場合、FPS が 0 に近くなるような気がします。実装しようとしている修正は、固定色を維持することです。ただし、実際の色の代わりに、それが表すクラスへのポインターを保持します。そうすれば、クラスの 200 色だけが変更されます。問題は、これを OpenGL でどのように実装できるかわかりません。これは実行可能ですか?これを行う方法の指針はありますか?
python - Linuxでのpyopenglの問題
私は初心者です。
Linuxでpyopenglを使用したいのですが、問題があります。
私は以下のようにpyopenglモジュールをインポートしようとします:
しかし、インタプリタはこのエラーメッセージを表示します:
私は何をすべきか?