2011-07-27 3 views
3

glDrawArrayとGL_TRIANGLE_STRIPを使ってテクスチャのグリッドをレンダリングしようとしていますが、描画時にアーティファクトがありますが、画面全体に不均一に分散しています。glDrawArrayアーティファクト

Screenshot of the problem.

このコードは、私が使用している:

void draw() { 
    glDisableClientState(GL_COLOR_ARRAY); 
    glBindTexture(GL_TEXTURE_2D, tex.name); 

    glPushMatrix(); 
    glScalef(cell_size, cell_size, 1); 

    GLfloat vertices[w*8]; 

    { // populate only once and translate 
     int i = 0; 
     for (int x=0; x<w; x++) { 
      vertices[i++] = x; vertices[i++] = 0; 
      vertices[i++] = x; vertices[i++] = 1; 
      vertices[i++] = x+1; vertices[i++] = 0; 
      vertices[i++] = x+1; vertices[i++] = 1; 
     } 
    } 

    GLfloat texCoords[w*8];  
    const float off = 1.00f/16.0f; 

    for (int y=0; y<h; y++) { 
     int i = 0; 
     for (int x=0; x<w; x++) { 
      const int v = tiles[x+y*w]; 
      const float boff = v*off; 
      texCoords[i++] = boff; texCoords[i++] = 0; 
      texCoords[i++] = boff; texCoords[i++] = 1; 
      texCoords[i++] = boff+off; texCoords[i++] = 0; 
      texCoords[i++] = boff+off; texCoords[i++] = 1; 
     } 

     glTexCoordPointer(2, GL_FLOAT, 0, texCoords); 
     glVertexPointer(2, GL_FLOAT, 0, vertices); 
     glDrawArrays(GL_TRIANGLE_STRIP, 0, w*4); 

     glTranslatef(0, 1, 0); 
    } 
    glPopMatrix(); 

} 

問題が何であるか任意のアイデア?

+0

ここでは、投影とモデルビューのマトリックスを設定しますか? – genpfault

答えて

5

このように、私はOGLに少しさびだけど、あなたはテクスチャがレンダリング・パラメーターを変更する必要があります。

glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); 
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); 
+0

うん、それはテクスチャの問題だった。私はそれをGL_NEARESTとGL_NEARESTに変更しました。 – sharvey

0

GL_NEARESTフィルタリングが働くかもしれないが、あなたはまた、(あなたのテクスチャのエッジの折り返しを変更することを検討することをお勧めしますまたは境界)プロパティ:

関連する問題