Рисование текстур меньшего размера на текстуре OpenGL большего размера на iPhone - PullRequest
0 голосов
/ 02 октября 2010

Я очень новичок в OpenGL, и это моя цель ...

  1. Загрузка текстуры из изображения.
  2. Загрузка другой текстуры, которая намного меньше, чемпервый.
  3. Теперь продолжайте рисовать меньшую текстуру на более крупной в некоторой цепочке событий, например рисовать на более крупной текстуре.

Может кто-нибудь указать мне на какой-нибудь материал, который мог быпомогите сделать это?

Я заглянул в какую-то книгу, но они в основном посвящены 3D-анимации, и я не хочу идти в этот отдел, мне просто нужны вещи для манипулирования текстурой в 2D.

Я следую примеру ...

http://developer.apple.com/library/ios/#samplecode/GLImageProcessing/index.html

Для своих экспериментов я модифицирую функцию drawGL () в примере, чтобы сделать это ...

Первый раз, когда вызывается drawGL (), ничего не меняется, так что на виде рисуется полная текстура.

На следующем этапе рисования я изменяю массив flipquad на ...

V2fT2f flipquad[4] = {
 { 0, .5, 0, .5 },
 { .5, .5, .5, .5 },
 { 0, 1, 0, 0 },
 { .5, 1, .5, 0 },
};

Так что модифицируется только верхний левый квадрант.Это прекрасно работает на симуляторе, но когда я запускаю его на устройстве, за исключением верхнего левого квадранта, мерцает остальная часть вида, то есть каждый альтернативный рисунок делает его черным!

Ответы [ 2 ]

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

Другие могут найти этот образец от Apple полезным: GLPaint

Надеюсь, это поможет!

1 голос
/ 02 октября 2010
  1. Нарисуйте большую текстуру в буфере кадра,
  2. Нарисуйте ее с небольшой текстурой, как вы хотите,
  3. Вызовите glCopyTexImage2D или glCopyTexSubImage2D для копирования нарисованной текстуры из рамкиБуфер обратно к объекту текстуры.

Вышеупомянутый метод будет работать с OpenGL 1.1 или выше.Однако это может быть не так эффективно, как вы хотите.Возможная оптимизация (зависит от вашей версии OpenGL) заключается в создании буфера закадрового кадра, привязанного непосредственно к большой текстуре, и рисовании там.Смотрите glGenFramebuffers.

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