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);

问题是在绘制的四边形中,顶部的单行基本上是从纹理底部复制的。可以清楚地看到 y=0 线的亮度变化与底部(复制的)线相同。

可能是什么问题?

4

1 回答 1

2

将换行模式切换为GL_CLAMP_TO_EDGE.

于 2012-10-19T00:14:54.750 回答