OberonCore
https://forum.oberoncore.ru/

BlackBox на OpenGL
https://forum.oberoncore.ru/viewtopic.php?f=114&t=4287
Страница 6 из 7

Автор:  Jordan [ Вторник, 30 Апрель, 2013 15:50 ]
Заголовок сообщения:  Re: BlackBox на OpenGL

Исходники данного проекта открыты? Где можно посмотреть реализацию?

Автор:  Пётр Кушнир [ Вторник, 30 Апрель, 2013 18:07 ]
Заголовок сообщения:  Re: BlackBox на OpenGL

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

Автор:  Jordan [ Вторник, 30 Апрель, 2013 19:12 ]
Заголовок сообщения:  Re: BlackBox на OpenGL

Пётр Кушнир писал(а):
Разработка открытая, но я пока исходники не публикую, потому что они для этого не готовы. Если у Вас есть вопросы, спрашивайте в этой ветке, я постараюсь ответить.


Я пробывал писать, gui библиотеку на основе sdl. На каждый контроллер я завёл отдельный список и при перемещении мыши или нажатии кнопки, проходился по всем спискам и перебирал совпадение координат контроллера и мыши.

Я смотрел первые реализации gtk. У них проверка происходит в одном списке. Есть одна структура c union полями. Это даёт преимущества, всё реализовано в одном месте. Так как в обероне объединений нет, как это сделано у вас?

К примеру создание кнопок происходит так. Я намеренно не использую ооп.

{$mode objfpc}{$H+}

program Main;

uses
GUI, Button;

var
A: PButton;
B: PButton;
begin
GUI.Init(800, 600, 32);

A := Button.Create('Hello 1', 50, 50, 100, 30);

B := Button.Create('Hello 2', 50, 100, 100, 30);

Button.SetPos(A, 300, 50);

GUI.Loop;
end.

Пётр Кушнир писал(а):
Ну тут понятно, что для контролов уровня Windows или Qt нужен труд не только кодеров, но и дизайнеров,


Уверен, что для реализации стандартного интерфейса они не нужны. Если делать стиль windows 2000. Хватит только линий.

Автор:  Пётр Кушнир [ Вторник, 30 Апрель, 2013 20:13 ]
Заголовок сообщения:  Re: BlackBox на OpenGL

Библиотека FreeGlut предоставляет средства по созданию окон с готовыми к использованию GL-контекстами.
Эти окна мы используем как порты, реализовав абстракции из Ports.
FreeGlut так же позволяет регистрировать процедуры-коллбэки для каждого окна, в коллбэки передаются данные о пользовательском вводе. То есть, при вызове коллбэка мы можем узнать окно, к которому относится данный вызов.
Полученные данные я помещаю в объекты-сообщения и передаю оконной подсистеме. В основе моей реализации оконной подсистемы используется паттерн Объект-сообщение.
Вот короткая цитата из Мёссенбёка (перевод Ивана Кузьмицкого):
Цитата:
9.4.1 Объект-сообщение

Одним из доступных способов работы с сообщениями являются методы. Другой способ - относиться к термину "отправка сообщения" буквально: в этом случае "сообщение" является пакетом данных (объект "сообщение") который рассылается от одного объекта-обработчика к другому. Для исполнения подобного, нам необходимы различные типы объектов-сообщений и метод, в котором эти объекты-сообщения обрабатываются.

Модуль Windows предоставляет для реализации абстракции оконной системы, которые просто нужно чётко исполнить. А выше моих реализаций уже работают стандартные механизмы БлэкБокса, фреймы, отображения, контейнеры, сообщения. Про них вы сможете прочитать в документации ББ, я их не менял.

Автор:  Alexey Veselovsky [ Среда, 08 Май, 2013 00:14 ]
Заголовок сообщения:  Re: BlackBox на OpenGL

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

PS. Функции вида PutPixel меня не интересуют. Нужно именно скопом вывести растр на экран. На входе массив содержащий данные для каждого пикселя.

Автор:  Илья Ермаков [ Среда, 08 Май, 2013 11:23 ]
Заголовок сообщения:  Re: BlackBox на OpenGL

Да, растр очень важен... Давно мысли о дополнении к стандартному Port в плане растров бродют.

Если подумать глубже, то вообще можно было бы заложить "абстрактный растр" где-то под Port. Чтобы рендерить портовые операции на этот абстрактный растр независимо от графической платформы, а потом уже растр выводить через платформу.
Правда, эта мысль идёт сейчас вразрез с работой Ивана и Петра, как я понимаю - они используют OpenGL на уровне реализации рисования примитивов... так?

Автор:  Иван Кузьмицкий [ Среда, 08 Май, 2013 11:59 ]
Заголовок сообщения:  Re: BlackBox на OpenGL

Да, реализация интерфейса Ports делается полностью на OpenGL, в этом плане все дороги открыты, т.к. у OpenGL много возможностей.

Автор:  Пётр Кушнир [ Среда, 08 Май, 2013 19:19 ]
Заголовок сообщения:  Re: BlackBox на OpenGL

Илья Ермаков писал(а):
Давно мысли о дополнении к стандартному Port в плане растров бродют.Если подумать глубже, то вообще можно было бы заложить "абстрактный растр" где-то под Port. Чтобы рендерить портовые операции на этот абстрактный растр независимо от графической платформы, а потом уже растр выводить через платформу.

Цитата:
Ports are carriers for pixel data. Examples of ports are screen and printer ports.

Чисто технически, порт и есть растр, а его физическим представлением в данном случае является кадровый буфер OpenGL. Хотя, есть и отличие, кадровые буферы обычно каждую "секунду" новые, а ББ-шный порт рассчитывает в некоторых случаях на то, что данные на экране хранятся без изменения до особой команды.
Но наверное такой режим можно и для OpenGL реализовать.
Поэтому, опять же, чисто технически, не хватает только особого Ports.Rider'а с методами, которые позволят гонять битмапы в буфер (а скорее всего, в текстуру на полигоне) и из него (как-нибудь сверхиффехтивна и сверхбыстра :) ).

Автор:  Пётр Кушнир [ Среда, 15 Май, 2013 10:58 ]
Заголовок сообщения:  Re: BlackBox на OpenGL

После праздников сразу наступила жара, код совсем не пишется. Попробовал графоманство: Porting BlackBox.

Автор:  Info21 [ Среда, 15 Май, 2013 13:27 ]
Заголовок сообщения:  Re: BlackBox на OpenGL

Пётр Кушнир писал(а):
После праздников сразу наступила жара, код совсем не пишется. Попробовал графоманство: Porting BlackBox.
Расширить жалкую оперативную память мозга текстом перед глазами -- мощная штука.

Пож., указывайте в текстах авторство.

Автор:  ilovb [ Вторник, 28 Май, 2013 15:10 ]
Заголовок сообщения:  Re: BlackBox на OpenGL

Бинд к GLFW https://code.google.com/p/cp-glfw/

Автор:  Пётр Кушнир [ Вторник, 28 Май, 2013 20:53 ]
Заголовок сообщения:  Re: BlackBox на OpenGL

Вы пилите альтернативный хост?

Автор:  ilovb [ Вторник, 28 Май, 2013 20:56 ]
Заголовок сообщения:  Re: BlackBox на OpenGL

Нет. Просто решил поделиться биндом.

ps Кстати, под линуксом наверно придется [ccall] выставлять у процедур.

Автор:  Пётр Кушнир [ Вторник, 28 Май, 2013 21:52 ]
Заголовок сообщения:  Re: BlackBox на OpenGL

Да можно везде ставить, в винде тоже работает, для либ, скомпиленых под MinGW.

Автор:  ilovb [ Вторник, 28 Май, 2013 22:13 ]
Заголовок сообщения:  Re: BlackBox на OpenGL

Наверно так и сделаю

Автор:  Jordan [ Вторник, 05 Ноябрь, 2013 16:39 ]
Заголовок сообщения:  Re: BlackBox на OpenGL

Хотелось бы узнать судьбу проекта. Что сделано, что осталось, развивается ли?

Автор:  Пётр Кушнир [ Вторник, 05 Ноябрь, 2013 19:25 ]
Заголовок сообщения:  Re: BlackBox на OpenGL

Все Вас ждут, вот представляете?

Автор:  Jordan [ Вторник, 05 Ноябрь, 2013 19:45 ]
Заголовок сообщения:  Re: BlackBox на OpenGL

С вами сложно вести диалог.

Я лишь всего задал вопрос, в каком состоянии находится данная разработка.

Автор:  Борис Рюмшин [ Вторник, 05 Ноябрь, 2013 19:51 ]
Заголовок сообщения:  Re: BlackBox на OpenGL

Товарищи, давайте поспокойнее. Ругаться в ЛС.

Автор:  Пётр Кушнир [ Вторник, 05 Ноябрь, 2013 19:54 ]
Заголовок сообщения:  Re: BlackBox на OpenGL

Jordan писал(а):
С вами сложно вести диалог.
Предполагаю, что Вы будете более уместны в этом треде http://oberspace.dyndns.org/index.php/t ... l#msg17268

Страница 6 из 7 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/