Вращение opengl с использованием gldrawpixels

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

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

Спасибо.

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
4
0
2 967
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

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

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

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

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

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

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

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

Да. Будем надеяться, что он выберет что-нибудь вкусное.

mmr 22.10.2008 03:41

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

Nils Pipenbrinck 22.10.2008 03:46

@nils: Допустим, кто-то хотел получить все пиксели с экрана, внести некоторые изменения, а затем вернуть их на экран. Что им нужно сделать, так это внести изменения, превратить это в текстуру, создать что-то, на что будет накладываться текстура, а затем просто отобразить это?

Will Mc 09.03.2009 11:10

@ Будет точно. OpenGL предназначен только для вывода API. Считывание пикселей с экрана работает, но имеет очень высокую цену.

Nils Pipenbrinck 09.03.2009 13:12

Другие вопросы по теме