1

対称的な四角形を描画するためにテクスチャ座標を設定する私のコードは次のとおりです。

GLfloat defaultTexCoords[] = {
    0.0f, 0.0f, // 0 (0,0)
    1.0f, 0.0f, // 1 (1,0)
    1.0f, 1.0f, // 2 (1,1)
    0.0f, 1.0f  // 3 (0,1)
};

// VERTEX ARRAY
GLfloat mainVertexArray[] = {
    0.0f,              0.0f,              // 0 1
    0.0f /* size_x */, 0.0f,              // 2 3
    0.0f /* size_x */, 0.0f /* size_y */, // 4 5
    0.0f,              0.0f /* size_y */  // 6 7
};

// VERTEX & TEXTURE INDEXES
GLushort defaultIndices[] = { 0, 1, 3, 2 };

glEnable( GL_TEXTURE_2D );
glEnableClientState( GL_TEXTURE_COORD_ARRAY );
glBindTexture( GL_TEXTURE_2D, m_texId );
glTexCoordPointer( 2, GL_FLOAT, 0, defaultTexCoords );

// Here the cells size_x, size_y, etc. in VERTEX ARRAY
// are overwritten with dimensions of quad to draw
// ... some mainVertexArray[...] = ...

glEnableClientState( GL_VERTEX_ARRAY );
glVertexPointer(2, GL_FLOAT, 0, mainVertexArray);
glDrawElements(GL_TRIANGLE_STRIP, 4, GL_UNSIGNED_SHORT, indices);

問題は、描画されたクワッドでは、上部の1本の線が基本的にテクスチャの下部からコピーされることです。y = 0の線の明るさが下の(コピーされた)線と同じように変化することがはっきりとわかります。

何が問題になる可能性がありますか?

4

1 に答える 1

2

ラップモードをに切り替えますGL_CLAMP_TO_EDGE

于 2012-10-19T00:14:54.750 に答える