Russian Qt Forum
Ноябрь 25, 2024, 10:29
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
2D и 3D графика
>
QT+OpenGL: растеризация
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: QT+OpenGL: растеризация (Прочитано 5220 раз)
bond
Гость
QT+OpenGL: растеризация
«
:
Январь 17, 2007, 23:57 »
С трехмеркой никада не сталкивался, а тут диплом навалился :shock:
Подсакажите, пожалуйста, какими алгоритмами реалзиован рендеринг в QT (названия, теорию сам найду) и чем отличается
renderPixmap
(...) от
grabFrameBuffer
(...)? С точки зрения не реализации, а результата - что для чего лучше подходит (отличия QPixmap от QImage, слава Богу, понятны :lol:)
Спасибо!
_____
Qt - 4.1.4, OpenGL - 1.1 (кажется, в общем - Windowый).
Записан
Dendy
Гость
QT+OpenGL: растеризация
«
Ответ #1 :
Январь 18, 2007, 00:40 »
Рендеринг в Qt происходит через QPaintEngine - интерфейс рисования, что перенаправляет операции QPainter'а. Софтвар - собственньІй бьІстрьІй растровьІй движек. АппаратньІй рендеринг - через OpenGL API. Фактически - рисованиями примитивов (+ градиентьІ с помощью шейдеров, если таковьІе имеются). renderPixmap() - прогнать операцию рисования на отдельном контексте, которьІй потом сграбится в картинку. grabFrameBuffer() - преобразовать текущее содержимое буфера в картинку, аналог - glReadPixels().
Собственно, какая задача то?
Записан
bond
Гость
QT+OpenGL: растеризация
«
Ответ #2 :
Январь 18, 2007, 10:06 »
Задача - подвести теоритическую базу под уже готовое (программулька - очень обрубленный Paint от трехмерной графики, рендерю через
grabFrameBuffer
()).
На возможный вопрос: "А че вы там с рендерингом намутили?" ответ: "я - ниче, все Тролли сделали" - не канает. Если попросят поподробнее про использованную технологию растеризации - посылать членов ГАКа читать исходники как-то неудобно.
Про алгоритм растеризации - в исходники, разумеется, нихто заглядывать не станет, и если я назову какой-нить на самом деле не используемый, то ниче особо страшного не случится. Но при этом хочется разобраться, а чтобы почерпнуть че-нить по данному вопросу из исходников QT - надо знать хотябы, какие алгоритмы бывают и вообще, чего искать.
Теперь про использование
renderPixmap
() и
grabFrameBuffer
(). Судя по доке,
renderPixmap
() создает новый контекст, применяет к нему
initializeGL
(),
paintGL
() и
resizeGL
() (может, еще
updateGL
(), точно не помню), при этом на содержимое создаваемой сцены влияет только функционал перечисленных методов. Если же текущая картинка на сцене - результат вращения, реализованного, например, через обработчик мыши, то
renderPixmap
() это вращение не учитывает и на выходе дает "первоначальный" вариант отображения объекта, сформированный "стандартными"
paintGL
() etc.
Таким образом, как я понял, если функционал, влияющий на отображение расположен де-то вне
init-paint-resize-updateGL
(), то для рендеринга надо использовать
grabFrameBuffer
(), иначе -
renderPixmap
() . Я прав?
Записан
bond
Гость
QT+OpenGL: растеризация
«
Ответ #3 :
Январь 20, 2007, 02:03 »
Собственно, предзащитлись =)
В смысле, дальнейшее литье воды считаю нецелесообразным и вопрос можно считать закрытым.
Dendy
, спасибо за участие.
Записан
Страниц: [
1
]
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...