我正在爲iOS創建一個ios繪畫應用程序,並且在最困難的時間在特定點處旋轉繪畫紋理以使其面對筆畫的方向。繪製GL_POINTS(指定2個座標)時,是否可以在頂點處旋轉紋理?
我在用戶的每次觸摸之間分開幾個像素來繪製紋理。頂點被表示爲具有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點或更多?
- 我是否需要啓用紋理映射?那是什麼阻止我獨立旋轉每個頂點的紋理?如果是這樣,我如何表示如上所示的頂點數組的紋理座標數組?我一直沒能弄清楚這一部分。
非常感謝您的幫助!
UPDATE:
我能想出解決辦法,並張貼在這裏我的答案:https://stackoverflow.com/a/11298219/111856
這很有道理。我使用POINT sprites將紋理渲染到不同的點,然後意識到點sprite不能旋轉。感謝您的迴應 – kajham