Forth и другие саморасширяющиеся системы программирования Locations of visitors to this page
Текущее время: Пт мар 29, 2024 12:16

...
Google Search
Forth-FAQ Spy Grafic

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




Ответить
Имя пользователя:
Заголовок:
Текст сообщения:
Введите текст вашего сообщения. Длина сообщения в символах не более: 60000

Размер шрифта:
Цвет шрифта
Настройки:
BBCode ВКЛЮЧЕН
[img] ВЫКЛЮЧЕН
[flash] ВЫКЛЮЧЕН
[url] ВКЛЮЧЕН
Смайлики ВЫКЛЮЧЕНЫ
Отключить в этом сообщении BBCode
Не преобразовывать адреса URL в ссылки
Вопрос
Теперь гостю придется вводить здесь пароль. Не от своей учетной записи, а ПАРОЛЬ ДЛЯ ГОСТЯ, получить который можно после регистрации на форуме через ЛС.:
Этот вопрос предназначен для выявления и предотвращения автоматических регистраций.
   

Обзор темы - Quark: PIXELZ
Автор Сообщение
  Заголовок сообщения:   Ответить с цитатой
Две ячейки по 4 байта.
Сообщение Добавлено: Вс янв 18, 2009 21:46
  Заголовок сообщения:   Ответить с цитатой
Хищник писал(а):
"сдвоенная" переменная X0Y0.

В смысле двойная - две ячейки по 4 байта, или два числа по 2 байта в одной ячейке?
Сообщение Добавлено: Вс янв 18, 2009 21:10
  Заголовок сообщения:   Ответить с цитатой
Да, совсем забыл. Добавлена также "сдвоенная" переменная X0Y0. Это слово указывает на адрес, в котором хранятся смещения по X и по Y соответственно. При выводе точки через PIXELZ эти смещения прибавляются к координатам, снимаемым со стека (например, перемещается панель с множеством объектов, и смещение панели автоматически применяется при отрисовке этих объектов). Кроме того, уже существующий массив, адресуемый через VIEWPORT, также используется для отсечения точек при выводе.
Сообщение Добавлено: Вс янв 18, 2009 13:03
  Заголовок сообщения:   Ответить с цитатой
control-flow стек в действительности организован как две независимых области памяти с общим указателем глубины. Один хранит адреса ссылок (вперед или назад, в зависимости от того, что требуется для конкретной конструкции), второй хранит идентификаторы структур управления, чтобы была возможность проверять парность ключевых слов. Например, IF запоминает текущий адрес для последующего вписывания ссылки вперед на стеке с начальным адресом CFSTACKADDR и одновременно кладет на стек CFSTACKID константу 1, чтобы ELSE/THEN могли убедиться, что они закрывают условный оператор, а не что-то еще.
Сообщение Добавлено: Вс янв 18, 2009 12:56
  Заголовок сообщения:   Ответить с цитатой
Урра! 8) CF-стек используется при создании конструкций ветвления и циклов без счетчика? А что значат эти слова: CFSTACKADDR CFSTACKID?
Сообщение Добавлено: Вс янв 18, 2009 11:43
  Заголовок сообщения:   Ответить с цитатой
WingLion писал(а):
Короче говоря, это то, что называется Z-буфер, ведь так?

Да, его программная реализация. Только кроме Z-буфера, еще "ID-буфер". С прицелом на форт-процессоры, которые смогут при наличии достаточного объема памяти делать сравнение Z аппаратно и выполнять ровно то же, что и кварк на PC.
Сообщение Добавлено: Вс янв 18, 2009 01:22
  Заголовок сообщения:   Ответить с цитатой
Короче говоря, это то, что называется Z-буфер, ведь так?
Сообщение Добавлено: Вс янв 18, 2009 01:18
  Заголовок сообщения:  Quark: PIXELZ  Ответить с цитатой
Обновление кварка (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 00:19

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


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