0

これが私がこれまでに持っているものです:

 Rectangle::Rectangle(int x, int y)
  {
    sizeX_ = x * CASE;
    sizeY_ = y * CASE;
    texture_ = gdl::Image::load("./ressources/floor.jpg");
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
  }

  void  Rectangle::draw()
{                                                                          
    texture_.bind();
    glBegin(GL_QUADS);

    glTexCoord2f(0.0f, 0.0f);
    glVertex3f(0.0f, 0.0f, 0.0f);

    glTexCoord2f(sizeX_ / CASE, 0.0f);
    glVertex3f(sizeX_, 0.0f, 0.0f);

    glTexCoord2f(0.0f, sizeY_ / CASE);
    glVertex3f(sizeX_, 0.0f, sizeY_);

    glTexCoord2f(sizeX_ / CASE, sizeY_ / CASE);
    glVertex3f(0.0f, 0.0f, sizeY_);

    glEnd();
  }

コンストラクターは場合によってはマップのサイズを取得します。例: (10, 10). 実際のサイズは になり(10 * CASE)ますCASE = 400

しかし、これはテクスチャを正しく繰り返していません。左上のポイントから右下のポイントにかけて、テクスチャーが縮小されて(良い点)パックされているように見えます。

私は何か間違っていますか?

4

1 に答える 1

5

glTexParameter現在バインドされているテクスチャに作用します。パラメータをグローバルに設定するわけではありません。これは、この関数を呼び出す前にテクスチャをバインドする必要があることを意味します。

glBindTexture(GL_TEXTURE_2D, ...);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
于 2013-05-29T15:02:01.643 に答える