我正在尝试将纹理应用于2个方格,但我只能应用于第一个方格。
我使用原始QUAD__STRIP绘制正方形。继承人代码:
glBegin(GL_QUAD_STRIP); glTexCoord2f(0.0,1.0); glVertex3f(-1.0f * size, -1.0f* size, 0); //1 glTexCoord2f(0.0,0.0); glVertex3f(-1.0f* size, 1.0f* size, 0); //2 glTexCoord2f(1.0,1.0); glVertex3f(1.0f* size, -1.0f* size, 0); //3 glTexCoord2f(1.0,0.0); glVertex3f(1.0f* size, 1.0f* size, 0);//4 glVertex3f(3.0f* size, -1.0f* size, 0);//5 glVertex3f(3.0f* size, 1.0f* size, 0);//6
glEnd();
glEnd();
答案 0 :(得分:2)
当你看到这行代码时:
glTexCoord2f(0.0,1.0); glVertex3f(-1.0f * size, -1.0f* size, 0); //1
第一个语句, glTexCoord2f()指定要连接到指定顶点的纹理的哪个点( glVertex3f())。 对于每个顶点,您必须告诉纹理的哪个点映射到它。
您可以查看此处:GameDev.NET - OpenGL texture mapping: An introduction 特别是“纹理坐标系”的一部分。
希望这有帮助!
*编辑,同时尝试http://nehe.gamedev.net/!很多OpenGL教程/文章,教程第6课中有纹理映射。 :) (虽然这不是良好编码实践的一个很好的例子)
答案 1 :(得分:0)
您没有为第二个四边形上的最后2个顶点(5和6)设置纹理坐标。