iOS OpenGL перекошенный рисунок - PullRequest
0 голосов
/ 11 октября 2011

Так что у меня возникла небольшая проблема с перекосом чертежа 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 (я использую стандартную систему координат bottom = 0, left = 0) -> Различия в системе координат UIKit с помощью вызова

vertices[i].position[1] =  [self bounds].size.height - col;

в цикле, но это может простобыть наивным предположением.У кого-нибудь есть какие-либо подсказки относительно того, что я делаю неправильно или, возможно, что мне нужно сделать в дополнение, чтобы рисунок появился в нужном месте ??Заранее спасибо!

ОБНОВЛЕНИЕ: Решено, я просто нарисовал сохраненное изображение в текстуру (текстура NPOT)!Если у кого-то еще есть проблемы с рисованием текстур NPOT, это должно сработать, по крайней мере, для меня, с единственной оговоркой, что он не поддерживается на более ранних устройствах ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...