我试图了解如何为 GL_QUAD_STRIP 指定纹理坐标。
我已经设法让事情为一个四边形工作:
float vertices[] = { 0.0f, 0.0f, 1.0f, +1.0f, 0.0f, 0.0f, // bottom line
0.0f, 1.0f, 1.0f, +1.0f, 1.0f, 0.0f}; // top line
unsigned int indices[] = {2, 0, // x = 0
3, 1}; // x = +1
float textureCoordinates[] = { 1.0f, 0.0f,
0.0f, 0.0f,
1.0f, 1.0f,
0.0f, 1.0f};
...
glBindBuffer(GL_ARRAY_BUFFER, 0); // unbinds any buffer object previously bound
glTexCoordPointer(2, GL_FLOAT, 0, textureCoordinates);
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, ibufferid);
glDrawElements(GL_QUAD_STRIP, 4, GL_UNSIGNED_INT, BUFFER_OFFSET(0));
这是结果的外观(带有图像的白色矩形,其余部分用于帮助解释):
但是我不明白选择 textureCoordinates[] 背后的逻辑:-(。
第一个纹理坐标是(1,0);我会假设这对应于右下角?
另外我会假设当OpenGL读取第一个索引:2时,它使用它来查找顶点:(0,1,1):左上角。接下来它读取第一个纹理坐标:(1,0)。但如上所述,我认为这是纹理的右下角!?
然而,纹理显示为未旋转,所以这不可能!?