所以我对OpenGL 1.1倾斜绘图有点问题。 背景: 基本上,应用程序是一个绘画应用程序(从glPaint借来的一些代码),用户可以使用各种颜色和点宽度绘制。当它们退出绘图屏幕时,我使用glReadPixels以RGBA格式保留像素颜色数据。当他们回来继续绘图时,我从磁盘中获取颜色数据,将其放入colorPointer并生成一个顶点数组,如下所示:
typedef struct _vertexStruct{ GLfloat position[2];} vertexStruct;
vertexStruct vertices[VERTEX_SIZE];
循环
GLfloat row = 0.0f;
GLfloat col = 768.0f;
for (int i = 0; i < (768 * 1024); i++) {
if (row == 1024.0f) {
col-- ;
row = 0.0f;
}
else {
row++;
}
vertices[i].position[0] = row;
vertices[i].position[1] = [self bounds].size.height - col;
}
以下是实际的绘图调用:
glVertexPointer(2, GL_FLOAT, sizeof(vertexStruct),&vertices[0].position);
glColorPointer(4, GL_UNSIGNED_BYTE, sizeof(pixelData.data), pixelData.data);
glEnableClientState(GL_COLOR_ARRAY);
glDrawArrays(GL_POINTS, 0, VERTEX_SIZE);
glDisableClientState(GL_COLOR_ARRAY);
// Display the buffer
glBindRenderbufferOES(GL_RENDERBUFFER_OES, viewRenderbuffer);
[context presentRenderbuffer:GL_RENDERBUFFER_OES];
因此,绘图成功,但它偏向左侧应该是。我以为我正在补偿OpenGL(我使用标准的底部= 0,左= 0坐标系统) - &gt; UIKit坐标系与
的区别vertices[i].position[1] = [self bounds].size.height - col;
在循环中调用,但这可能只是一个天真的假设。任何人都有任何线索,我做错了什么或者我需要做什么除了让图纸出现在正确的地方?提前谢谢!
更新:解决了,我只是将保存的图像绘制到纹理(NPOT纹理)!如果其他人担心绘制NPOT纹理,它应该起作用,至少对我有用,唯一需要注意的是早期设备不支持它......