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





Вы не можете использовать glRotate с glDrawPixels.
glDrawPixels - это наихудший и наименее эффективный способ получить пиксели на экране. Вы даже получите лучшую производительность, поместив пиксели на экран с помощью плохо написанного программного растеризатора.
Короче говоря, glDRawPixels копирует данные пикселей из памяти процесса в графическую память и выполняет некоторые очень тривиальные преобразования, такие как переворот и масштабирование. Все более продвинутое (например, вращение) требует, чтобы вы действительно использовали возможности графического чипсета. Например. Вы должны использовать текстуры.
И текстуры работают. Они также хорошо работают с GL 1.4 и графическими чипсетами Intel. Я сам давно работал над таким чипсетом. Вы не получите производительности современных чипсетов ATI или NVIDIA, но и они неплохие который.
Лучше всего, что кто-то пытался создать текстуры размера не в степени двойки, но не смог этого сделать и решил, что текстуры в целом не работают на чипсете.
Это не правда. Они действительно работают. Вам просто нужно знать, что OpenGL требует, чтобы вы создавали текстуры с точностью до двух измерений и что вы должны либо использовать подпрямоугольник большей текстуры, либо поместить несколько изображений в одну очень большую текстуру (последняя называется атласом текстуры).
Вы можете компенсировать меньшее изображение в более крупной текстуре, регулируя координаты текстуры.
Попробуйте: сначала загрузка пиксельных данных в текстуру, а затем их вращение будет ужасно медленным, но не медленнее, чем вызов glDrawPixels в первую очередь.
@nils: Допустим, кто-то хотел получить все пиксели с экрана, внести некоторые изменения, а затем вернуть их на экран. Что им нужно сделать, так это внести изменения, превратить это в текстуру, создать что-то, на что будет накладываться текстура, а затем просто отобразить это?
@ Будет точно. OpenGL предназначен только для вывода API. Считывание пикселей с экрана работает, но имеет очень высокую цену.
Да. Будем надеяться, что он выберет что-нибудь вкусное.