2012-02-06 15 views
0

OpenGLの仕様では、すべての変換が設計によって無視されますが、glDrawTexのようにテクスチャを描画する簡単な方法はありますが、前にマトリックスでピクセルを変換していますか?glDrawTexで描画された矩形を変換する方法はありますか?

+0

'glDrawTex'関数はありません。おそらく、あなたは何か他のことについて考えているでしょう。どの機能を参照していますか? –

+0

@ NicolBolas:ほとんどの著者は、glDrawTexOES機能を提供するOpenGL ESのOES_draw_extensionについて話しています。 –

+0

はい、混乱して申し訳ありません。 – devsnd

答えて

0

glDrawTex関数のx/y/z引数を変更するだけで、必要な位置にテクスチャを変換できますか? しかし、テクスチャを回転させたい場合は、2つの三角形を使ってテクスチャ付きクワッドを描画します。それはとても簡単です。あなたは、OpenGL ESバージョン1.1持っていると仮定:

const float v[] = { 
    0, 0, 0, 0, 
    0, 128, 0, 1, 
    128, 0, 1, 0, 
    128, 128, 1, 1, 
}; 

glBindTexture(GL_TEXTURE_2D, texId); 
glEnable(GL_TEXTURE_2D); 

glTexCoordPointer(2, GL_FLOAT, 4*4, &v[2]); 
glVertexPointer(2, GL_FLOAT, 4*4, &v[0]); 
glEnableClientState(GL_TEXTURE_COORD_ARRAY); 
glEnableClientState(GL_VERTEX_ARRAY); 

glDrawArrays(GL_TRIANGLE_STRIP, 0, 4); 

をテクスチャ位置はモデルビュー行列を使用して変更することができる。この方法は(私はあなたが、正投影を使用して描画されていると仮定している、と128は、テクスチャのサイズです)

。また、テクスチャ行列を使用して、テクスチャがどのように三角形に適用されるかを変更できます。

+0

答えをくれてありがとうございますが、私はQuadを自分で簡単に描くことができますが、別のフロート配列を割り当ててバスを介してデータを送信する必要がない代替案があるかどうかは疑問でした。それはほんの数行のコードなので、私はそれを答えとしてマークします。 – devsnd

関連する問題