вращение opengl с использованием gldrawpixels - PullRequest
4 голосов
/ 22 октября 2008

Моя команда в настоящее время ограничена рисованием изображений на платформе opengl 1.4, что означает, что мы не можем использовать какие-либо изящные текстуры для рисования изображения (да, мы ограничены использованием интегрированной графической платформы Intel, это очень раздражает). Пока что мы можем рисовать, масштабировать и переворачивать изображение, но парень, работающий с графикой, утверждает, что вращение через glRotate невозможно при использовании glDrawPixels, что нам нужно перейти к текстурам и так далее, которые не работают на платформе Intel.

Я поспорил с ним, что есть функция поворота, такая как glRotate, которая будет работать для прямых растровых изображений. Существует ли такая функция? Будет ли работать glRotate? Я немного новичок в этой графике, но кажется нелепым, что библиотека не позволяет вращать растровые изображения, кроме как через ротацию текстур.

Спасибо.

1 Ответ

7 голосов
/ 22 октября 2008

Вы не можете использовать glRotate с glDrawPixels.

glDrawPixels - это худший и наименее производительный способ, позволяющий получить пиксели на экране. Вы даже получите лучшую производительность, поместив пиксели на экран, используя плохо написанный программный растеризатор.

Короче говоря, glDRawPixels скопирует пиксельные данные из памяти процесса в графическую память и выполнит некоторые очень тривиальные преобразования, такие как отражение и масштабирование. Все более продвинутое (например, вращение) требует от вас фактического использования функций графического чипсета. Например. Вы должны использовать текстуры.

И текстуры работают. Они также хорошо работают с GL 1.4 и графическими чипсетами Intel. Я сам давно работал над таким чипсетом. Вы не получите производительность современных чипсетов ATI или NVIDIA, но они не так уж и плохи.

Моя лучшая ставка в том, что кто-то пытался создать текстуры не мощного размера двух, не смог этого сделать и решил, что текстуры вообще не работают на чипсете.

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

Вы можете компенсировать меньшее изображение в пределах большей текстуры, регулируя координаты текстуры.

...