問題タブ [textures]
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での効率的なテクセルアクセス
私はOpenGLでゲームに取り組んでおり、これが私がやりたいことです:
- ゲームロジックの反復中に、計算のためにテクスチャのテクセルにアクセスします。
- それでも同じロジックの相互作用中に、テクスチャのテクセルを変更する可能性があります。
- テクスチャの現在のバージョンでゲームシーンをレンダリングします。
- テセルデータへの同様のアクセスで別の反復を開始します。
glGetTexImage()を使用すると、プログラムがクラッシュするという問題が発生します。とにかく、これが使用したいものかどうかは完全にはわかりません。
これを行うために私が見ることができる唯一の簡単な方法は、システムメモリにテクセル情報を含むバッファを用意し、それをいじり回して、反復ごとに新しいOpenGLテクスチャを生成することです。それは悪い動きのようです。
何か助けはありますか?
opengl - OpenGL テクスチャが表示されない場合の通常のトラブルシューティング手順は何ですか?
アプリケーションにいくつかの変更を加えた後、テクスチャが表示されなくなりました。これまでのところ、次のことを確認しました。
- カメラの向きは変わっていません。
- ベクトルが表示されます (テクスチャの代わりに色を付けた場合)。
いつもの容疑者?
c++ - 単純なOpenGLテクスチャマップが機能していませんか?
OpenGLでテクスチャマッピングを理解しようとしていますが、簡単な例を実行できません。
ポリゴンは描画されていますが、テクスチャではなく単色です。また、これまでglDrawPixelsを正常に使用していたため、ビットマップはsprite1[]に正しくロードされています。
glGenTexturesを使用してtex名を取得していますが、texName1が変更されていないことに気付きました。このGLuintは、glGenTexturesを呼び出した後でも、初期化したものです。
GL_TEXTURE_2Dを有効にしました。
コードは次のとおりです。
更新:私は途方に暮れています。これが私が試したすべてです:
OGLが初期化される前に、テクスチャを初期化していたことがわかりました。テクスチャはクラスコンストラクタで初期化され(glGenTextures-> glTexImage2D)、フレームごとに呼び出されるメンバー関数で描画されます(glBegin-> glEnd)。genTexturesは現在正しく機能しているようで、名前は1になっています。
GL_RGBA8、GL_BGRA_EXTのすべての可能な組み合わせ(GL_BGRAは私のシステムでは機能しません。_EXTが必要です)、さらにビットマップからアルファチャネルを削除し、GL_RGB、GL_BGR_EXTなどのすべての組み合わせを試しました。運が悪いです。
手続き的にビットマップを作成し、それを使用してみました
GL_COLOR_MATERIALが有効になっていないことを確認してください。
ビットマップサイズを32x32に変更しました。
glTexEnvfの代わりにglTexEnviを試しました。
c++ - テクスチャbmpファイルをテクスチャとしてOpenGLの長方形にタイリングしますか?
私が作成しているデモのために、3x2の長方形の平らな面に並べて表示しようとしているpic.bmpがあります。
bmpのアスペクト比をそのまま維持しようとしていますが、それでもそのサーフェス全体に並べて表示したいと思います。現在、サーフェスの頂点は(0,0,0)、(3,0,0)、(0,2,0)、および(3,2,0)です。
このbmpを平らな面に適用して並べて表示するにはどうすればよいですか?GLUTとOpenGLでこれを行うための最良の方法は何ですか?
c++ - OpenGLでテクスチャを透明にするにはどうすればよいですか?
私はこれをGoogleで調べようとしましたが、首尾一貫した単純な答えはないようです。これは単純ではないためですか、それとも正しいキーワードを使用していないためですか?
それにもかかわらず、これは私がこれまでに成し遂げた進歩です。
- 2つの正方形を形成するために8つの頂点を作成しました。
- 200ビットのアルファ値を持つテクスチャを作成しました(つまり、約80%透明)。
- 正しく表示される各正方形に同じテクスチャを割り当てました。
- アルファが255のテクスチャを使用すると、明るく見えることに気づきました。
initは次のようなものです。
これは、本の417ページのOpenGLプログラミングガイドのコードスニペットにいくぶん似ており、チェックパターンを作成します。
そして、表示機能には...
したがって、これにより、背景に2番目の正方形がレンダリングされます。私はこれを見ることができますが、背後のテクスチャではなく、背景とブレンドされているように見えます(255ビットよりも200ビットアルファで暗いため、これを想定しています)...
ご覧のとおり、透明性はありません...どうすればこれを修正できますか?
opengl - OpenGLアルファ値はテクスチャをより白くしますか?
RGBA値でテクスチャをロードしようとしていますが、アルファ値はテクスチャをより白くし、透明度を調整しないようです。3Dシーンでこの問題について聞いたことがありますが、私は2D用のOpenGLを使用しています。とにかくこれを修正できますか?
私はOpenGLを初期化しています
スクリーンショット:
色あせたドット画像は半透明である必要があります。黒のビットは完全に透明であると想定されています。ご覧のとおり、背後に透けて見えない画像があります。
そのテクスチャを生成するコードはかなり長いので、私が何をしたかを説明します。これは、unsignedchar型の40* 30*4配列です。4文字ごとに128に設定されます(50%透明にする必要がありますか?)。
次に、それをこの関数に渡し、データをテクスチャにロードします。
そして...私はちょうど問題を見つけたと思います。このコードでフルサイズのテクスチャを初期化していました:
しかし、glTexImage2DもGL_RGBAである必要があると思いますか?2つの異なる内部フォーマットを使用できませんか?または、少なくともサイズの異なるもの(3バイトと4バイト)ではありませんか?GL_BGRは、このように初期化された場合でも正常に機能します...
c++ - OpenGL でテクスチャを動的にロードする良い方法は何ですか?
現在、2 番目のスレッドでイメージをメモリにロードしてから、表示ループ中に (テクスチャのロードが必要な場合)、テクスチャをロードします。
OpenGLが気に入らなかったため、2番目のスレッドでテクスチャをロードできないことがわかりました。おそらくこれは可能ですが、私は何か間違ったことをしました-これが実際に可能である場合は修正してください.
一方、私の失敗が有効である場合、レンダリング ループを中断せずにテクスチャをロードするにはどうすればよいですか? 現在、テクスチャがメモリからロードされるのに約 1 秒かかります。これは大きな問題ではありませんが、ユーザーにとっては少しイライラすることがあります。
iphone - iPhone OpenGL ES 2d 背景テクスチャ
背景のゲームのテクスチャに使用する 1024 x 1024 の画像があります。
大きな背景テクスチャの描画を処理する適切な方法であるかどうか疑問に思っています。
現在のやり方:
xna - 描画と衝突検出のために Texture2D を動的に変更または破棄する
2D プロジェクトに XNA を使用しています。問題があり、それを解決する方法がわかりません。たとえば、画面に描画されるテクスチャ (画像) があります。
今、私はその構造/画像の一部を破壊して、次のようにしたいと考えています:
そのため、新しい画像でも衝突が機能するようになりました。
この問題を解決するには、どの方法がよいでしょうか。
- テクスチャ全体を、破壊された場所が透明な別のテクスチャと交換します。
- spriteBatch.Draw(sourceRectangle, destinationRectangle) でいくつかのトリックを使用して、目的の長方形を描画し、これを何らかの方法で衝突チェックも行います。
- テクスチャを 4 つの小さなテクスチャに分割し、それぞれが独自の描画/衝突検出を担当します。
- 私が知らない他のスマートなお尻の方法を使用してください。
どんな助けでも大歓迎です。さらに説明や例が必要な場合はお知らせください。
編集:明確にするために、これの使用例を提供します。4x4 の壁を想像してみてください。撃たれると、その壁の 1x1 の部分が少し破壊されます。