問題タブ [glteximage2d]
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 - パーティクル システムに追加した後、glTexSubImage2d が機能しない (各パーティクルにテクスチャがある)
glTexSubImage2d を使用して、GL 初期化で glTexImage2d で初期化された数フレームごとにテクスチャを更新していました。各パーティクル自体にテクスチャを適用したパーティクル システムを追加した後、glTexSubImage2d テクスチャを表示するクワッドが表示されません。
パーティクルのテクスチャは PNG であるため、SDL を使用して PNG を SDL サーフェスにロードし、glTexImage2d を使用して PNG をテクスチャにバインドします。
クワッドの glTexSubImage2d 呼び出しを glTexImage2d 呼び出しに変更すると、テクスチャが表示されますが、これは非常に非効率的であり、フレームレートが少なくとも半分になるため、glTexSubImage2d を使用することをお勧めします (以前は機能していたように)。
glTexSubImage2d を使用できない理由を知っている人はいますか?
以下は、テクスチャの初期化とバインドに関連するコードです。
パーティクル テクスチャの読み込み
クワッドのテクスチャを設定する:
initGL() での唯一の呼び出しは、GL_TEXTURE_2D の有効化、GL_BLEND の glBlendFunc() の設定、および上記のクワッドのテクスチャの設定です。
何か案は?
android - Android OpenGL ES 2.0 -- glReadPixels() と glTexImage2D() は黒いテクスチャを描画しますか?
私は、EGL コンテキストの損失と再作成の間にフレームバッファー オブジェクトのカラー バッファーをキャッシュして再描画するための Android コードに取り組んでいます。開発は、主に Honeycomm を実行している Xoom タブレットで行われています。とにかく、私がやろうとしているのは、FBO で glReadPixels() を呼び出した結果を直接 ByteBuffer に格納し、そのバッファを glTexImage2D() で使用して、(現在クリアされている) フレームバッファに戻すことです。これはすべて正常に動作しているようです — ByteBuffer には正しい値 (Java が符号なしバイトを理解できないため、ピクセルの [-1, 0, 0, -1] など) が含まれており、GlErrors はスローされていないようです。クワッドは画面の右側に描画されます (現在、テスト目的でフレーム バッファーの左上の 4 分の 1 です)。
ただし、何を試しても、 glTexImage2D() は常にプレーンな黒いテクスチャを出力します。私は以前にこれに関していくつかの問題を抱えていました — ビットマップを表示するとき、私は最終的にバッファで基本的な GLES20.glTexImage2D() を使用しようとすることをあきらめ、ビットマップを処理する GLUtils.glTexImage2D() を使用することにスキップしました。残念ながら、それはここでは選択肢が少ないため (実際に ByteBuffer を Bitmap に変換して、GLUtils を使用できるようにしましたが、あまり成功しませんでした)、本当にアイデアが尽きてしまいました。
glTexImage2D() が完全に良好な ByteBuffer を正しく処理しない原因となる可能性のあるものを誰か考えられますか? あらゆる提案を歓迎します。
ちなみに、gfx.drawTexture() はクワッドを構築し、現在バインドされているフレームバッファに描画します。このコードは、私のプロジェクトの他の部分で十分にテストされています。ここでは問題になりません。
opengl - glGetTexImageはCVOpenGLTextureRefでは機能しません
OpenGL2.1を搭載したMacOSX用のアプリを書いています
CVOpenGLTextureRef
GL_QUADSでレンダリングしたテクスチャを保持するがあり、すべてが正常に機能します。
テクスチャのどのピクセルが黒であるかを判断する必要があるため、テクスチャから生データを読み取るために次のコードを記述しました。
glGetError()
レポートしますGL_NO_ERROR
が、呼び出し後のバッファは変更されませんglGetTexImage()
...それはまだ空白です。
私は何か間違ったことをしていますか?
glReadPixels()
レンダリングする前にテクスチャを変更し、変更されていないテクスチャの生データを取得する必要があるため、使用できないことに注意してください。
編集:私はその後のアプローチでも試しましたが、出力としてまだゼロバッファがあります
EDIT2:同じ問題がこことここで報告されています
c++ - glTexSubImage2Dを呼び出すときのOpenGLエラー「無効な値」
いくつかの後処理効果を実行しているテストに使用している小さなアプリケーションがあります。私の目標は、ダブルPBOを使用してピクセルを読み取り、ピクセルをフルスクリーンテクスチャクワッドにレンダリングし、フラグメントシェーダーでエフェクトを変更/追加することです。ここに似ています。アプリケーションはOSGを使用していますが、フルスクリーンテクスチャリングを行うためにopenGL呼び出しを使用しています。
私の問題は、glTexSubImage2Dを使用して各フレームのテクスチャにピクセルをコピーすると、無効な値のopenGLエラーが発生することです。これがエラーを生成する呼び出しであることをgDEBuggerで確認しました。エラーが最初に発生したとき、ポインタアドレスは後続のすべてのフレームとは異なります。また、glTexSubImage2d 0の幅と高さのパラメーターを作成することにより、エラーは生成されません。だから私は何が起こっているのか本当にわかりません。
関連するコードは次のとおりです。
opengl - OpenGL の GPU でテクスチャ データにアクセスするにはどうすればよいですか?
GPU でテクスチャ データにアクセスする方法がよくわかりません。可能であれば、誰でもこれらを説明できますか?
テクスチャ ユニットの数が制限されている場合、 を使用して生成し
glGenTextures()
、GPU にアップロードできるテクスチャの数は制限されglTexImage2D()
ますか? それとも、 を使用してバインドできるテクスチャ ユニットの数のみを制限しglBindTexture()
ますか?私が本当にやりたいことは、すべてのテクスチャを GPU にアップロードできるようにすることです。たとえ利用可能なテクスチャ ユニットの数よりも多い場合でもです。テクスチャが必要な場合は、 を使用してテクスチャ ユニットにバインドし
glBindTexture()
ます。これは可能ですか?
textures - glTexImage2Dを使用したOpenGLのテクスチャの更新
glTexImage2DとglTexSubImage2Dは、ピクセルのバッファをテクスチャに渡す唯一の方法ですか?
現時点では、セットアップ関数glTexImage2Dでnullをバッファーとして渡し、レンダリングループで、反復ごとに新しいバッファーデータを使用してglTexSubImage2Dを呼び出します。
しかし、テクスチャが寸法などのプロパティを変更しないことを知っているので、実際のピクセルデータをレンダリングテクスチャに渡すためのより効率的な方法はありますか?
c++ - C++ OpenGL glTexImage2D アクセス違反
OpenGL (freeglut と glew) を使用してアプリケーションを作成しています。
テクスチャも欲しかったので、ビットマップ ファイル フォーマットについて調査し、メイン ヘッダー用の構造体と DIB ヘッダー (情報ヘッダー) 用の構造体を作成しました。
それからローダーを書き始めました。テクスチャを OpenGL に自動的にバインドします。関数は次のとおりです。
ビットマップのデータをコンソールに出力し、ペイントで開いた画像と比較したので、ビットマップのデータが正しく読み込まれていることがわかりました。
ここでの問題は次の行です。
ほとんどの場合、アプリケーションを実行すると、次の行がエラーでクラッシュします。
GunsGL.exe の 0x008ffee9 で未処理の例外: 0xC0000005: アクセス違反の読み取り場所 0x00af7002。
これは、エラーが発生した場所の逆アセンブリです。
他のローダーをダウンロードしたので、私のローダーのエラーではありません。私が使用したダウンロード ローダーは、NeHe のこれでした。
編集:(上記のコードを更新)
ローダーを書き直しましたが、それでも同じ行でクラッシュします。そのクラッシュの代わりに、mlock.c でクラッシュが発生することがあります (同じエラー メッセージを正しく思い出すことができます)。
行上:
また、アプリケーションがクラッシュしないときのスクリーン ショットを次に示します (テクスチャが明らかに正しくありません): http://i.stack.imgur.com/4Mtso.jpg
編集2:
新しい作業コードでコードを更新しました。(回答としてマークされた返信には、これが機能するために必要なすべてが含まれているわけではありませんが、重要でした)
c++ - OpenGL 3 以降の GLUT/FreeType の例で glTexImage2D が失敗する
ここにある例を使用しています: http://en.wikibooks.org/wiki/OpenGL_Programming/Modern_OpenGL_Tutorial_Text_Rendering_01
問題は、バージョン 3 より上の OpenGL コンテキストを指定すると、次のようになることです。
glTexImage2D を呼び出すと、GL_INVALID_ENUM (GLIntercept によって報告される) エラーが発生し、例の出力は空白になります。OpenGL 3.3 リファレンスからわかる限り、これは型が有効な型定数ではないか、ターゲットが無効なターゲットである場合にのみ発生するはずです。
問題のある行は次のとおりです。
また、NeHe チュートリアル ( http://nehe.gamedev.net/tutorial/freetype_fonts_in_opengl/24001/ ) のように、ビットマップのサイズを変更して寸法が最も近い 2 の累乗になるようにサンプルを変更しようとしましたが、それでも取得しました同じエラー。
また、GLFW を使用して例を実装しようとしましたが、同じ問題があります。
この例では別のシェーダー読み込みコードを使用していますが、シェーダーは両方とも正常にコンパイル/リンクされ、最新の OpenGL バージョンを指定していない場合でも例は機能します。
それが私の環境に役立つ場合: Windows 7 64 ビット、Visual Studio 2010
AMD HD6950 グラフィックス、Catalyst 12.3 ドライバー。
ソフトウェア ライブラリは次のとおりです。
FreeGLUT 2.8.0
GLEW 1.7.0
FreeType
2.4.9 glm-0.9.3.0
参考までに、ここに gliLog.txt を示します。同じエラーが何度も繰り返されるため、ログの末尾のほとんどを省略しました。
そして、ここにサンプルコードがあります
ios - iOS4.0 では yuv420 の再生は失敗しますが、iOS5.0 では成功します
iOS5.0 では、カメラからキャプチャしたビデオを次のコードでうまく再生できます。
iOS4.0 では、以下のコードがうまく動作します。
しかし、ローカルの mp4 ファイルから読み取ったビデオを再生すると、2 番目の方法は失敗し、最初の方法はうまく機能します。次に、それを修正する方法は?なぜこれが起こったのですか?
ios - GL_DEPTH_COMPONENT を指定した glTexImage2D は iOS4 で動作し、iOS 5 では GL_INVALID_ENUM で失敗します
次のコードは、iOS 4 ではエラーなく動作し、iOS5 では glTexImage2D の後に CHECK_GL_ERROR マクロ 0x500 で出力されます。これに関する情報を検索しましたが、有用なものは見つかりませんでした。
glTexImage2D のパラメータを変更しようとしましたが、成功しません。なぜそれが機能しているのですか?iOS 4 と 5 の違いは何ですか? これを修正する方法は?