gluCylinder() や gluDisk() などの関数のテクスチャ座標オフセットと乗数を設定するにはどうすればよいですか?
したがって、通常、テクスチャがポイント 0 から始まる場合、ポイント 0.6 または 3.2 などから開始するように設定したいと思います。つまり、テクスチャが大きくなったり小さくなったりするということです。
解決策は glScalef() ではありません。1) 法線を使用しているため、2) テクスチャの開始位置も調整したいからです。
テクスチャ マトリックス スタックを使用してみてください:
glMatrixMode(GL_TEXTURE);
glLoadIdentity();
glTranslatef(0.6f, 3.2f, 0.0f);
glScalef(2.0f, 2.0f, 1.0f);
glMatrixMode(GL_MODELVIEW);
drawObject();
解決策は GLU 関数とは関係なく、実際にglScalef
(そしてglTranslatef
オフセット調整のため)、テクスチャ マトリックスに適用します (シェーダーを使用しないと仮定します)。で呼び出すことによって選択されたテクスチャ マトリックスは、頂点のテクスチャ座標glMatrixMode
をGL_TEXTURE
変換してから、補間してテクスチャにアクセスするために使用します (これらのテクスチャ座標がどのように計算されても、この場合は GLU によって計算されます。この場合、CPU でそれらを計算して呼び出すだけです)。glTexCoord2f
)。
したがって、テクスチャを (0.1,0.2) から (もちろんテクスチャ空間で) 開始し、2 倍の大きさにするには、次のように呼び出します。
glMatrixMode(GL_TEXTURE);
glTranslatef(0.1f, 0.2f, 0.0f);
glScalef(0.5f, 0.5f, 1.0f);
電話する前にgluCylinder
。ただし、後でこれらの変更を必ず元に戻してください (おそらく の間にラップしますglPush/PopMatrix
)。
ただし、ワールド空間座標に基づいてテクスチャ座標を変更する場合は、さらに計算が必要になる場合があります。もちろん、頂点シェーダーを使用して、テクスチャ座標の生成を完全に制御することもできます。