我正在为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];
这并没有给我带来理想的效果,即每个顶点上纹理的旋转角度代表两个点之间的偏差。
我的问题是:
非常感谢您的提前帮助!
更新:
我能够弄清楚这一点,并将答案发布在这里:https://stackoverflow.com/a/11298219/111856
最佳答案
绘制为GL_POINTS时无法旋转点,需要使用其他方式,例如将纹理绘制为GL_TRIANGLES