9

その幅とは異なるピッチでopengl es 2.0のテクスチャをブリットする方法はありますか? 通常、PBO を使用するか、glPixelStore を介して GL_PACK_ROW_LENGTH を調整することで、これを修正します。ただし、Android プラットフォームには、バッファをバインドするための GL_PIXEL_UNPACK_BUFFER も GL_PACK_ROW_LENGTH も存在しないようです。

glTex(Sub)Image2D はこれをサポートしていません。

任意のヒント?

4

3 に答える 3

2

@Halsafarの引用

一部のシナリオでは、これはテクスチャ座標を調整することで解決できます。


私が持っているとしましょう512バツ512512*でピッチされたテクスチャbitdepth

しかし、私が使用したいデータは256*に売り込まれていますbitdepth

先に進みglSubTexImage2Dますが、テクスチャ座標を次のように調整します0256/512

の代わり01

言い換えれば、私が使用していないテクスチャの部分を取り除きます。

于 2011-08-04T15:04:51.983 に答える
1

少しやり過ぎに聞こえるかもしれませんが(または期待に合わない場合もあります)、ラスタライザーとフレームバッファーオブジェクトを利用することもできます。テクスチャをカラーバッファーとして使用してFBOを作成し、...描画します。些細な頂点+フラグメントシェーダーのおかげで、いくつかのテクスチャクワッド:単純なオルソを使用します。頂点シェーダーで投影行列を作成し、フラグメントシェーダーでポイントサンプリングテクスチャサンプリングを使用します。

于 2011-11-26T08:52:09.973 に答える
0

コメントで答えたので、より直接的な答えは次のとおりです。

// width and height is 256 and max is 512
// texture coordinates
float uMax = (width / max);
float vMax = (height / max);

_texCoords[0] = 0.0; _texCoords[1] =  vMax;
_texCoords[2] = uMax; _texCoords[3] =  vMax;
_texCoords[4] = 0.0; _texCoords[5] =  0.0;
_texCoords[6] = uMax; _texCoords[7] =  0.0;

これらの texcoords を使用してレンダリングすると、256x256 のテクスチャを 512x512 のバッファに貼り付けることができます。使用する幅と高さは、最大サイズ以下の任意のサイズにすることができます。

于 2012-01-17T07:46:46.410 に答える