Деформация изображения на iphone с OpenGL - PullRequest
2 голосов
/ 20 октября 2010

Я довольно новичок в программировании, и я делаю это, на данный момент, просто для того, чтобы учиться и получать удовольствие.

У меня много проблем с пониманием некоторых вещей OpenGL, несмотря на то, что я прочитал эту замечательную статью здесь . Я также скачал и поиграл с примером с сайта разработчиков Apple, который использует изображение .png для спрайта. В конце концов я хочу использовать изображение.

Все, что я хочу сделать, это взять изображение и деформировать его так, чтобы четыре угла заканчивались четырьмя различными координатами x, y, которые я предоставляю. Это будет происходить с помощью таймера (CADisplayLink?), Когда один или несколько из этих точек будут меняться в каждый момент. Я просто хочу растянуть его между этими динамическими точками.

У меня просто проблемы с пониманием, как именно это работает. Как я понял, пример кода в центре разработчиков, я могу использовать:

glVertexPointer(2, GL_FLOAT, 0, spriteVertices);

где spriteVertices - это что-то вроде:

const GLfloat spriteVertices[] = {
-0.90f, -.85f,  
0.95f, -0.83f,  
-0.85f,  0.85f, 
0.80f,  0.80f,    
};

Проблема в том, что я не понимаю, что на самом деле означают цифры, почему у некоторых есть негативы перед ними и откуда они рассчитывают получить четыре угла. Как мне нужно изменить нормальные координаты x, y, которые я получу, чтобы подключить их к этому? (Числа, которые у меня были бы для x, y, не были бы похожи на числа от 1 до 0, не так ли?

Любая помощь очень ценится, даже если это просто ссылка на дополнительные материалы. У меня проблемы с поиском ресурсов для новичка.

1 Ответ

1 голос
/ 21 октября 2010

Это не так сложно, как кажется на первый взгляд. Каждая пара чисел относится к позиции x, y на экране. Таким образом, 0,80f, 0,80f, скажем, перейти к 80% области рисования для x и y (слева направо, вниз вверх). В то время как -0,80, -0,80 говорят о переходе в 80% области рисования справа налево, вверх-вниз. Негативы просто меняют стороны. Следует отметить, что openGL опускается вверх (как будто вы смотрели на здание с земли), а iPhone - вниз (как будто вы читаете книгу).

Чтобы получить пиксели, вы умножаете значение с плавающей запятой на область рисования 1024 X 0,8 = 819,2.

Этот урок для текстур, но он удивителен и действительно помогает вам изучить системы координат: http://iphonedevelopment.blogspot.com/2009/05/opengl-es-from-ground-up-part-6_25.html

...