1

立方体にテクスチャをアタッチしようとしています。現在、テクスチャは伸びています。

テクスチャ座標に問題があることはわかっていますが、何が原因かわかりません。

すべての頂点位置(x,y,z)について、テクスチャ座標(x,y)を作成しました。

float [] texCoords = new float [2*allPoints.size()];
int index= 0;
for(int i = 0; index< allPoints.size()-1; i=i+2){
           texCoords[i] = (float)allPoints.get(index).getX();
           texCoords[i+1] = (float)allPoints.get(index).getY();
           index++;
}

glTexParameters:

gl2.glTexParameteri( GL.GL_TEXTURE_2D, GL.GL_TEXTURE_MIN_FILTER,GL.GL_NEAREST);
gl2.glTexParameteri( GL.GL_TEXTURE_2D, GL.GL_TEXTURE_MAG_FILTER,GL.GL_NEAREST);
gl2.glTexParameteri(GL.GL_TEXTURE_2D,GL.GL_TEXTURE_WRAP_S,GL.GL_REPEAT);
gl2.glTexParameteri(GL.GL_TEXTURE_2D,GL.GL_TEXTURE_WRAP_T,GL.GL_REPEAT);

現在の出力:

ここに画像の説明を入力してください

4

1 に答える 1

0

GL_REPEATOpenGLのテクスチャ座標は、その境界を超えると、 forGL_TEXTURE_WRAP_Sとのパラメータに従って0-1にスケーリングされますGL_TEXTURE_WRAP_T

リストの構成についてはわかりませんがallPoints、立方体の場合、頂点ごとに複数の一意のテクスチャ座標が必要になるため、頂点を複製する必要があります。手で描いたり考えたりする場合1、頂点上のテクスチャ座標も0隣接する面のものである必要があります。

各面には、次のテクスチャ座標が必要です。

(0, 1)--(1, 1)
|            |
|            |
|            |
(0, 0)--(1, 0)

次に、立方体の面について考えます。ポイント(1, 1)(0, 1)、隣接する面のポイントです。頂点を複製して、その問題を修正します。

于 2012-11-05T02:43:08.497 に答える