問題タブ [pbo]
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.
android - glReadPixels() の代わりに Android OpenGL ES 3.0 PBO
glReadPixels()
PBO (GLES 3 デバイス用) を使用してパフォーマンスを向上させたいのですが、次のコードで問題が発生しました。
現時点では、glReadPixels()
メソッドは失敗します。this & thisを見つけましたが、IntBuffer 引数を取るため、ゼロを送信できません。この問題に関する提案をいただければ幸いです
更新:そのタスクに Java API のみを使用することは不可能のようです。そのため、ndk を使用してglReadPixels()
、正しい最後の引数 (int オフセット) で呼び出す関数を追加しました。現在、GL 呼び出しでエラーが発生することはありません。
それが私のjni cコードです:
ここでの問題は、glReadPixels()
PBO がない場合よりも呼び出しにさらに時間がかかるため、パフォーマンスの向上がまだないことです。なぜそうなったのかを調べて、何か見つけたら更新します。
更新 2 以前に更新するのを忘れていましたが、実際には pbuffer サーフェスを使用していたため、パフォーマンスが向上しなかったことが問題でした。そのオプションと、pbuffer サーフェスを使用しないオプションを比較したところ、パフォーマンスが大幅に向上しました。
したがって、オフスクリーンでレンダリングして glReadPixels を使用する場合は、pbuffer サーフェスを使用する価値があります
c++ - サブイメージをホストから opengl ピクセル バッファ オブジェクトに効率的にコピーする
現在、CPU ホストから OpenGL メモリにデータを移動しており、ピクセル バッファ オブジェクトを使用しています。次のように画像全体をコピーできます。
これは実際にはかなり高速です。ただし、データの長方形のサブイメージをコピーする必要があります。したがって、本質的には、これを行うには複数の memcpy を実行する必要があります。これは、行ごとにコピーする必要があるため、パフォーマンスが低下する可能性があります。この操作を実行するためのより高速な方法があるかどうか疑問に思っていました。
opengl - フラグメント シェーダーのパレットを使用した PBO インデックス付きカラー テクスチャ レンダリングが機能しない
私は8ビットグラフィックスのゲームに取り組んでいます。ゲームループに Pixelbuffer (OSXRenderer.pbo) を提供していっぱいにします。次に、それをテクスチャ (OSXRenderer.ScreenTexture) に texsubimage します。テクスチャは、クワッドを介して画面にレンダリングされます。
RGB PBO (サイズ: 幅*高さ*3) で問題なく動作しました。しかし今、私はpboをインデックスカラーにしたいと思っています。そこで、パレットを別のテクスチャ (OSXRenderer.PaletteTexture) にロードし、PBO を変更しました。(サイズ: 幅*高さ)。
私はそれがどのように機能するべきかを理解しています:PBOはノイズ(ランダムなuint8 0-63)で満たされ、スクリーンテクスチャはtexsubimagedを取得し、クワッドを介して画面にレンダリングすると、フラグメントシェーダーはすべてのREDチャネル値をパレットの対応する色に置き換えます画面に 8 ビットのノイズが表示されます。
しかし、私は単にそれを機能させることができません。黒い画面しか表示されません。fragcolor を受信した screentexture(pbo) データに設定すると、赤いノイズが発生します。予想通り。
[編集] フラグメント シェーダーの「色」変数の値をテストしました。そして、常に 1.0 であるアルファを除いて、それらは常に 0.0 です。
設定:
更新ループ:
頂点シェーダー:
フラグメントシェーダー:
qt - 圧縮されたテクスチャを含む QGLBuffer
glCompressedTexImage2D() および glCompressedTexSubImage2D() で QT の QGLBuffer を使用しようとしていますが、成功しません。
これは、QGLBuffer と glTexImage2D() を使用したコードの作業部分です。
これは、同様に機能する圧縮画像データを使用する別のコード セグメントです。
ただし、次のように glCompressedTexImage2D() で PBO を使用すると:
無効な操作エラーが発生しました。QGLBufferのドキュメントには、「ピクセルデータをGLサーバーに書き込むため(たとえば、glTexImage2D()を使用)」と書かれていますが、glCompressedTexImage2D()などの他のアンパックコマンドについては何も言及されていません。
QGLBuffer と glCompressedTexImage2D() の両方でより多くのドキュメントをウェブで検索しましたが、それらを同時に使用することについては何も見つかりません。
QT4.8を使用してLinuxで作業しています。
これを成功させた経験のある人はいますか?
php - フォームから mysql データベースにデータを取得できません
コードを php で動作させるのに問題があります。データを html のフォームから mysql データベースに移動したいのですが、動作しませんか??
フォームパーツ
php部分
私のmysqlデータベースへの接続は機能します。データベースからデータを取得できますが、データベースに入力することはできません。
ありがとうございます。
これは、私が試した多くの解決策の1つであり、機能していません!!
opengl-es-3.0 - PBO の glReadPixel GL_RGB でエラー 0x502 INVALD OPTION が発生した理由
私が見た
format は、返されるピクセル値の形式を指定します。受け入れられる値は次のとおりです。
GL_ALPHA GL_RGB GL_RGBA RGBA カラー コンポーネントは、カラー バッファから読み取られます。各カラー コンポーネントは、ゼロ強度が 0.0 にマッピングされ、フル強度が 1.0 にマッピングされるように、浮動小数点に変換されます。
その後、不要なデータは破棄されます。たとえば、GL_ALPHA は赤、緑、青のコンポーネントを破棄しますが、GL_RGB はアルファ コンポーネントのみを破棄します。GL_LUMINANCE は、赤、緑、および青のコンポーネントの合計として単一コンポーネントの値を計算し、GL_LUMINANCE_ALPHA は、アルファを 2 番目の値として保持しながら、同じことを行います。最終値は [0, 1] の範囲にクランプされます。"
https://www.khronos.org/opengles/sdk/1.1/docs/man/glReadPixels.xml _
GL_RGBA を使えばうまくいきます。でも私が変われば
glReadPixelsPBOJNI(0, 0, 幅, 高さ, GLES30.GL_RGBA, GLES30.GL_UNSIGNED_BYTE, 0);
に
glReadPixelsPBOJNI(0, 0, 幅, 高さ, GLES30.GL_RGB, GLES30.GL_UNSIGNED_BYTE, 0);
0x502 を取得しています。これの何が問題なのですか?
私のコードはここにあります: https://stackoverflow.com/questions/34347835/how-can-i-implement-pbopixel-buffer-object-in-android-grafika-project
performance - glMapBufferRange() が遅く、マッピングされたデータの memcpy() も Android で遅い
グラフィックの ContinuousCaptureActivity ( ContinuousCaptureActivity.java のソース コード)に似たビデオ録画デモを作成することができました。
違いは、grafika はハードウェア エンコーディングを使用していましたが、私はソフトウェア エンコーディングを使用したことです。ソフトウェア エンコーディングでは、非常に高速な PBO を使用して GPU からすべてのビデオ フレームを取得し、画像データを ffmpeg にコピーしてから、h264 エンコーディングを行います。
glMapBufferRange() は 5 ミリ秒未満、 memcpy() は10 ミリ秒未満でした。
しかし、huawei mate7の携帯では性能が低い。glMapBufferRange() は 15~30ms、memcpy() は 25~35ms かかりました。
mate7 で通常の memcpy() をテストしましたが、通常のメモリをコピーするとはるかに高速です。
それは本当に奇妙です、誰が私を助けてくれますか?
デバイス情報:
詳細はこちら:huawei mate 7
pbo コードは次のとおりです。
opengl - GL_MAP_COHERENT_BIT はどのように機能しますか?
glBufferStorageにはフラグ GL_MAP_COHERENT_BIT があり、このフラグには次の説明があります。
クライアント アクセス用に同時にマップされ、サーバーによって使用されるバッファーへの共有アクセスは、そのマッピングが glMapBufferRange を使用して実行される限り、一貫性があります。つまり、クライアントまたはサーバーのいずれかによってストアに書き込まれたデータは、アプリケーションがそれ以上のアクションを実行しなくても、すぐに他方に表示されます。特に、
マッピングされた範囲に値を記述した場合、どのように相手に見えるようになりますか? これは DMA コントローラ経由の DMA 転送を使用していますか? それとも別のメカニズムがありますか?