Forth и другие саморасширяющиеся системы программирования Locations of visitors to this page
Текущее время: Вт окт 17, 2017 19:05

...
Google Search
Forth-FAQ Spy Grafic

Часовой пояс: UTC + 3 часа [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 8 ] 
Автор Сообщение
 Заголовок сообщения: Quark: PIXELZ
СообщениеДобавлено: Вс янв 18, 2009 00:19 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 6076
Благодарил (а): 13 раз.
Поблагодарили: 96 раз.
Обновление кварка (build 16)

PIXELZ ( x, y, color -- ) - это почти обычный PIXEL. Отличается тем, что предназначен для решения проблемы вывода перекрывающихся объектов методом грубой силы. С этим словом связаны следующие переменные (VARIABLE)
OBJECT-ID[] - указатель на массив 2048*2048 4-байтовых ячеек, хранящих идентификаторы объектов, выведенных в соответствующие пикселы экрана
OBJECT-Z[] - указатель на массив 2048*2048 4-байтовых ячеек, хранящих координаты Z выведенных объектов
OBJECT-ID - идентификатор текущего объекта
OBJECT-Z - координата Z текущего объекта

Слово PIXELZ проверяет координату Z в массиве и сравнивает ее с OBJECT-Z. Вывод пиксела производится только в том случае, если OBJECT-Z больше или равен содержимому массива OBJECT-Z[] для соответствующего пиксела. Если это выполняется, OBJECT-Z заменяет содержимое этой ячейки, а в соответствующую этому пикселу ячейку OBJECT-ID[] записывается OBJECT-ID. Таким образом, узнать, какой именно объект находится в интересующих нас координатах, можно просто чтением массива OBJECT-ID[].

Память для массивов при старте системы не выделяется (для экономии, поскольку требуется по 16 Мб для каждого массива). Это необходимо сделать самостоятельно, записав указатели в OBJECT-Z[] и OBJECT-ID[].

Также добавлены разнообразные указатели на начальные адреса всех используемых стеков и их DEPTH.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Вс янв 18, 2009 01:18 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 13:19
Сообщения: 3565
Откуда: St.Petersburg
Благодарил (а): 4 раз.
Поблагодарили: 72 раз.
Короче говоря, это то, что называется Z-буфер, ведь так?

_________________
С уважением, WingLion
Forth-CPU . RuF09WE
Мой Форт
Отсутствие бана это не заслуга юзера, а недоработка модератора (с)


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Вс янв 18, 2009 01:22 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 6076
Благодарил (а): 13 раз.
Поблагодарили: 96 раз.
WingLion писал(а):
Короче говоря, это то, что называется Z-буфер, ведь так?

Да, его программная реализация. Только кроме Z-буфера, еще "ID-буфер". С прицелом на форт-процессоры, которые смогут при наличии достаточного объема памяти делать сравнение Z аппаратно и выполнять ровно то же, что и кварк на PC.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Вс янв 18, 2009 11:43 
Не в сети
Аватара пользователя

Зарегистрирован: Вт мар 20, 2007 23:39
Сообщения: 1244
Благодарил (а): 3 раз.
Поблагодарили: 16 раз.
Урра! 8) CF-стек используется при создании конструкций ветвления и циклов без счетчика? А что значат эти слова: CFSTACKADDR CFSTACKID?

_________________
Cтоимость сопровождения программного обеспечения пропорциональна квадрату творческих способностей программиста.
Роберт Д. Блисc


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Вс янв 18, 2009 12:56 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 6076
Благодарил (а): 13 раз.
Поблагодарили: 96 раз.
control-flow стек в действительности организован как две независимых области памяти с общим указателем глубины. Один хранит адреса ссылок (вперед или назад, в зависимости от того, что требуется для конкретной конструкции), второй хранит идентификаторы структур управления, чтобы была возможность проверять парность ключевых слов. Например, IF запоминает текущий адрес для последующего вписывания ссылки вперед на стеке с начальным адресом CFSTACKADDR и одновременно кладет на стек CFSTACKID константу 1, чтобы ELSE/THEN могли убедиться, что они закрывают условный оператор, а не что-то еще.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Вс янв 18, 2009 13:03 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 6076
Благодарил (а): 13 раз.
Поблагодарили: 96 раз.
Да, совсем забыл. Добавлена также "сдвоенная" переменная X0Y0. Это слово указывает на адрес, в котором хранятся смещения по X и по Y соответственно. При выводе точки через PIXELZ эти смещения прибавляются к координатам, снимаемым со стека (например, перемещается панель с множеством объектов, и смещение панели автоматически применяется при отрисовке этих объектов). Кроме того, уже существующий массив, адресуемый через VIEWPORT, также используется для отсечения точек при выводе.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Вс янв 18, 2009 21:10 
Не в сети
Аватара пользователя

Зарегистрирован: Вт мар 20, 2007 23:39
Сообщения: 1244
Благодарил (а): 3 раз.
Поблагодарили: 16 раз.
Хищник писал(а):
"сдвоенная" переменная X0Y0.

В смысле двойная - две ячейки по 4 байта, или два числа по 2 байта в одной ячейке?

_________________
Cтоимость сопровождения программного обеспечения пропорциональна квадрату творческих способностей программиста.
Роберт Д. Блисc


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Вс янв 18, 2009 21:46 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 6076
Благодарил (а): 13 раз.
Поблагодарили: 96 раз.
Две ячейки по 4 байта.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 8 ] 

Часовой пояс: UTC + 3 часа [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2


Вы не можете начинать темы
Вы можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
phpBB сборка от FladeX // Русская поддержка phpBB