我正在为 iOS 创建一个 ios 绘画应用程序,并且最难在特定点旋转绘画纹理以使其面向笔画方向。
我在用户的每次触摸之间绘制了几个像素的纹理。顶点被表示为具有 x 和 y 坐标的 2d 点到顶点缓冲区中,然后将其渲染到屏幕上。这是我用来绘制的代码:
count = MAX(ceilf(sqrtf((end.x - start.x) * (end.x - start.x) + (end.y - start.y) * (end.y - start.y)) / kBrushPixelStep), 1);
GLfloat *vBuffer = malloc(2 * sizeof(GLfloat));
for(i = 0; i < count; i++) {
vBuffer[0] = start.x + (end.x - start.x) * ((GLfloat)i / (GLfloat)count);
vBuffer[1] = start.y + (end.y - start.y) * ((GLfloat)i / (GLfloat)count);
CGFloat degrees = atan2(end.y - start.y, end.x - start.x) * 180 / M_PI;
glMatrixMode(GL_TEXTURE);
glPushMatrix();
glVertexPointer(2, GL_FLOAT, 0, vBuffer);
glDrawArrays(GL_POINTS, 0, count);
glRotatef(degrees, 0, 0, 1);
glPopMatrix();
}
// render to screen
glBindRenderbufferOES(GL_RENDERBUFFER_OES, renderbuffer);
[context presentRenderbuffer:GL_RENDERBUFFER_OES];
这并没有给我想要的效果,即纹理在每个顶点处的旋转角度表示两点之间的偏差。
我的问题是:
- 如何在每个点仅旋转纹理?
- 仅用 x,y 坐标表示每个顶点是否足够,还是必须为 3 个点或更多?
- 我需要启用纹理映射吗?那是什么阻止我在每个顶点独立旋转纹理?如果是这样,我如何表示上面表示的顶点数组的纹理坐标数组?我一直无法弄清楚那部分。
非常感谢您提前提供的帮助!
更新:
我能够弄清楚这一点并在此处发布我的答案:https ://stackoverflow.com/a/11298219/111856