iOS OpenGL倾斜绘图

时间:2011-10-11 14:13:50

标签: ios opengl-es

所以我对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纹理,它应该起作用,至少对我有用,唯一需要注意的是早期设备不支持它......

0 个答案:

没有答案