我有一个带纹理的4角多边形,我正在使用两个三角形和GL_TRIANGLE_STRIP绘制。右侧需要更高,这会使事情变得混乱。三角形在中间相交时会有明显的差异,我该如何清除这样的东西?
我认为我需要某种仿射变换,或者细分为更多的三角形,但我不确定。
屏幕截图:http://i.imgur.com/alYdG.png
示例代码:
float x = rect.origin.x;
float y = rect.origin.y;
float w = x + rect.size.width;
float h = y + rect.size.height;
V2fT2f quad[4] = {
//x y
{ x, y, 0, 1 },//bottom left
{ w, y-0.2, 1, 1 },//bottom right
{ x, h, 0, 0 },//top left
{ w, h+0.2, 1, 0 },//top right
};
glEnable(GL_TEXTURE_2D);
glEnableClientState(GL_VERTEX_ARRAY);
glBindTexture(GL_TEXTURE_2D,texID);
glEnableClientState(GL_TEXTURE_COORD_ARRAY);glErrorCheck();
glVertexPointer (2, GL_FLOAT, sizeof(V2fT2f), &quad[0].x);
glTexCoordPointer(2, GL_FLOAT, sizeof(V2fT2f), &quad[0].s);
glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);
答案 0 :(得分:0)
无论如何要通过转换获得效果 - 您需要设置透视投影。
完成后,这是您的顶点(这些形成一个宽度和高度的矩形)
将其封闭在glRotatef(角度,0,1,0)内 - 围绕Y轴旋转角度
这应该可以满足您的需求。