2012-03-12 6 views
0

私は開発中の単純なゲームで衝突の検出方法を検討していますが、今は止まっています。PNGテクスチャをメモリにインポートしますが、フレームバッファではなくC++とOpenGLを使用します

テクスチャをメモリにロードするが、フレームバッファにロードしようとしていません。座標を使ってテクスチャからピクセル(具体的には色)を読み込みます...バッファの内容を簡単に読み込み、座標しかし、私はテクスチャでこれを行う方法を考えることができません、それは可能ですか?

ヘルプ/ガイダンス/リサーチする機能や可能な機能は大いにありがたく思っています。

注:私は、OpenGL 2.0

答えて

2

OpenGLを使用していますが、画像操作、また画像アクセスライブラリではありません。それは描画APIなので、それを扱う必要があります。 OpenGLでは(全体的に)テクスチャを読み込むことは可能です(パフォーマンスはあまり高くありません)。 OpenGL-ESでは、テクスチャデータを直接読み込む方法はありません。

テクスチャイメージ全体が通常のバッファに既にありますか?とにかくそれを操作したいからです。それらの色のために単一のピクセルを読み返すことは、関数呼び出しのオーバーヘッドによってCPUを詰まらせるので、ばかげているだけです。

+0

私はOpenGLでしかできないと言いましたが、私はC++でOpenGLを使ってPNGをテクスチャとしてロードしていると言っていました。テクスチャをどのように読み込んでも気にしません。 C++やOpenGLの中で、私は最良の方法を求めていましたが、あなたのアドバイスに感謝します。私はそれを心に留めて、他の解決策を考えてみましょう。 – trystan

+1

@trystan:OpenGLはファイルからの画像の読み込みを扱っていないので、PNGをテクスチャに読み込むためにどのようなメソッドを使用していても、データのアップロードにも使用されるので、テクスチャデータをバッファに渡す必要がありますOpenGLにそこからデータを取得することをお勧めします。 – datenwolf

+0

@trystan datenwolfが言ったように、最良の方法はOpenGLを使わないことです。すでに持っているCPUメモリバッファからピクセル値を取り出してください(イメージをファイルからCPUメモリにロードしたので、それはあなたですか?)。 –

0

通常のバッファにpngをデコードします。 glGenTexturesでテクスチャを作成します。 glBindTextureによるテクスチャのバインド。 glTexImage2Dで画像をテクスチャに読み込みます。

+0

私はそれを理解していますが、テクスチャからピクセルを読み取るにはどうすればいいですか? glReadPixelsは、フレームバッファからのみピクセルを読み取ります。ありがとう – trystan

+0

@ trystan:なぜあなたはテクスチャからピクセルを読み取る必要がありますか?テクスチャにデータを与えました。後でそのテクスチャにレンダリングしない限り、それは与えたのと同じピクセルを持ちます。だから、CPUに必要な場合は、テクスチャを作成した後にバッファを保持してください。 –

+0

フレームバッファから複数のテクスチャをレンダリングするとフレームバッファからの読み込みがうまくいかないので、特定のテクスチャ/イメージから読み込む必要があります。何かを明確にした場合に、衝突検出の参照として使用されますか? – trystan

関連する問題