我只是想重复使用 iOS 5.1 GLKit 改进加载的纹理,我已经绘制到一个简单的四边形上。
这是顶点和texCoords
#define ROAD_TEX_COORD_MAX 10
const Vertex roadVertices[] =
{
{ { 90, -90, 0 } , { 1, 1, 1, 1 }, { ROAD_TEX_COORD_MAX, 0 } }, // Bot R - 0
{ { 90, 90, 0 } , { 1, 1, 1, 1 }, { ROAD_TEX_COORD_MAX, ROAD_TEX_COORD_MAX } }, // Top R - 1
{ { -90, 90, 0 } , { 1, 1, 1, 1 }, { 0 , ROAD_TEX_COORD_MAX } }, // Top L - 2
{ { -90, -90, 0 } , { 1, 1, 1, 1 }, { 0 , 0 } } // Bot L - 3
};
const GLubyte roadIndices[] =
{
0, 1, 2,
2, 3, 0
};
这是渲染例程:
- ( void ) render
{
[self.baseEffect prepareToDraw];
glBindBuffer( GL_ARRAY_BUFFER, vertexBuffer );
glBindBuffer( GL_ELEMENT_ARRAY_BUFFER, indexBuffer );
glEnableVertexAttribArray( GLKVertexAttribPosition );
glVertexAttribPointer( GLKVertexAttribPosition, 3, GL_FLOAT, GL_FALSE, sizeof( Vertex ), ( const GLvoid * ) offsetof( Vertex, Position ) );
glEnableVertexAttribArray( GLKVertexAttribColor );
glVertexAttribPointer( GLKVertexAttribColor, 4, GL_FLOAT, GL_FALSE, sizeof( Vertex ), ( const GLvoid * ) offsetof( Vertex, Color ) );
glEnableVertexAttribArray( GLKVertexAttribTexCoord0 );
glVertexAttribPointer( GLKVertexAttribTexCoord0, 2, GL_FLOAT, GL_FALSE, sizeof( Vertex ), ( const GLvoid * ) offsetof( Vertex, TexCoord ) );
glDrawElements( GL_TRIANGLES, sizeof( roadIndices ) / sizeof( roadIndices[0] ), GL_UNSIGNED_BYTE, 0 );
}
然而,这就是我最终的结果:
现在我已经阅读了默认情况下使用 REPEAT 纹理设置的 EAGL 设置,您必须手动将其设置为 CLAMP_TO_EDGE。但是,这里的情况并非如此——我没有设置其中任何一个(尽管我尝试禁用 CLAMP 并启用 REPEAT 并且所做的只是使四边形变黑并且看不到任何纹理。