Официальный форум СВД Встраиваемые Системы
10 Декабря, 2016, 15:45:21 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.

Войти
 
 
 Сайт СВД ВС  Начало   Помощь Поиск Войти Регистрация  
Страниц: [1]   Вниз
  Печать  
Автор Тема: Рендеринг на экран при помощи GF  (Прочитано 714 раз)
SamWot
Интересующийся

Сообщений: 3


« : 30 Мая, 2013, 09:26:50 »

Здравствуйте, я полный профан в компьютерной графике, так что прошу не сердиться за возможную глупость вопроса или неточность определений.)
Мне необходимо получить адрес framebuffer для непосредственного отображения графики на экране. Это нужно для написания Screen драйвера для Qt.
Как написано на сайте GF (http://www.qnx.com/developers/docs/6.4.0/gf/dev_guide/layers.html#surfaces) для этого необходимо создать surface при помощи функции gf_surface_create_layer(). Затем при помощи gf_surface_get_info() получить адрес vaddr из структуры gf_surface_info_t. Тогда, вся информация помещенная в буфер по адресу vaddr будет сразу отображена на экране.
Я проделал все эти шаги:
(щёлкните чтобы показать/скрыть)
 

После получения vaddr я пытаюсь проверить как это работает и в цикле заполняю часть этого буфера единицами.
(щёлкните чтобы показать/скрыть)

По моим представлениям за свет этого верхние 5 строк экрана должны закраситься белым цветом, однако этого не происходит.
Соответственно и вопрос в том как правильно получить адрес vaddr, а затем как с ним работать?
Записан
Александр Молодцов
Сотрудник СВД ВС
Опытный пользователь

Сообщений: 129

Gravatar


WWW
« Ответ #1 : 30 Мая, 2013, 16:47:40 »

Судя по второму куску кода Вы не записываете данные в память, а переписываете адрес буфера в структуре. Скорее всего этот код должен выглядеть следующим образом:
Код:
for (int i=0; i < info.stride * 5; i++) {
info.vaddr[i] = 0xFF;
}

Однако данные не будут сразу выводиться на экран. Измененные данные "сбрасываются" на поверхность с помощью функции gf_draw_flush. Но для этой функции необходимо предварительно создать контекст (gf_context_create), привязать его к слою (gf_context_set_surface) и начать рисование (gf_draw_begin). По окончании работы с буфером следует завершать рисование (gf_draw_end) предварительно обновив содержимое экрана функцией gf_draw_flush.

Возможно, Вам также стоит посмотреть как реализована работа с графикой в имеющемся драйвере для Qt.
Записан

Страниц: [1]   Вверх
  Печать  
 
Перейти в:  

Powered by MySQL Powered by PHP © 2002-2016 СВД Встраиваемые Системы.
При использовании материалов сайта ссылка на forum.kpda.ru обязательна.

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines | © Aiwan. Kolobok smiles | Sitemap
Valid XHTML 1.0! Valid CSS!
Сайт СВД ВС

В последний раз google посещал эту страницу 13 Ноября, 2016, 15:09:26