User Tag List

Показано с 1 по 10 из 11

Тема: Табличка всех вариантов пикселей и аттрибутов

Комбинированный просмотр

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1

    Регистрация
    25.11.2015
    Адрес
    г. Москва
    Сообщений
    192
    Спасибо Благодарностей отдано 
    12
    Спасибо Благодарностей получено 
    16
    Поблагодарили
    14 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Зачем только сразу делать по 32 бита на точку? Чем плохо 16 цветов с палитрой? Можно сразу вычислять по 8 точек пользуясь 1(только для pixels) или 3(еще для paper и delta) таблицами на 256 элементов и это будет быстрее чем копировать по 32 байта. В таблице mask каждый бит индекса просто дублируется по 4 раза, то есть если на входе 011000100b, в ячейке должна лежать маска 0FF000F00h.
    PHP код:
    uint32 Paper = ((attr >> 3) & $0F )*$11111111
    uint32 delta  
    = ((attr&7) ^ (attr >> 3) & $0F )*$11111111
    result
    =paper^(delta&mask[pixels]) 

  2. #1
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  3. #2

    Регистрация
    19.01.2005
    Адрес
    Санкт-Петербург
    Сообщений
    11,552
    Спасибо Благодарностей отдано 
    205
    Спасибо Благодарностей получено 
    188
    Поблагодарили
    83 сообщений
    Mentioned
    5 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от blackmirror Посмотреть сообщение
    Зачем только сразу делать по 32 бита на точку?
    Потому что такой формат текстуры выбран в OpenGL. (по привычке)
    Сейчас погуглил, для спектрума можно наверное и GL_R3_G3_B2 обойтись.

    Цитата Сообщение от blackmirror Посмотреть сообщение
    Можно сразу вычислять по 8 точек пользуясь 1(только для pixels) или 3(еще для paper и delta) таблицами на 256 элементов и это будет быстрее чем копировать по 32 байта. В таблице mask каждый бит индекса просто дублируется по 4 раза, то есть если на входе 011000100b, в ячейке должна лежать маска 0FF000F00h.
    Ничего не понял )

  4. #3

    Регистрация
    25.11.2015
    Адрес
    г. Москва
    Сообщений
    192
    Спасибо Благодарностей отдано 
    12
    Спасибо Благодарностей получено 
    16
    Поблагодарили
    14 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    newart, чтобы выполнить преобразование нужно из атрибутов вычислить какого цвета должен быть paper, вычислить какого цвета ink, сделать xor между paper и ink чтобы получить delta. Далее все 8 точек красим в цвет paper (delta тоже копируется в 8 точек, или можно и то и другое сразу вытащить из таблицы), из таблицы на 256 элементов вытаскиваем маску для точек которые нужно перекрасить в цвет ink, делаем побитовое and с delta и затем хоr c paper, в итоге точки которые должны быть цвета ink будут перекрашены. Если использовать GL_R3_G3_B2, значит в каждом элементе таблицы будет по 8 байт, причём в таблице масок байты будут только 00 и FF, а для других таблиц байты в пределах 1 элемента будут одинаковые.

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Ответов: 1
    Последнее: 19.01.2011, 22:05
  2. Всех с 8 марта!
    от Максагор в разделе Поздравления
    Ответов: 8
    Последнее: 12.03.2009, 02:28
  3. Ремонт одного из вариантов "Ленинград-1"
    от Chokki в разделе Ленинград
    Ответов: 18
    Последнее: 10.02.2009, 00:46

Ваши права

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