Это гвоздями прибито, или подумаем?
Смотри, есть такая маза, сканируешь по прежнему, только не пиксели, а страничку, (т.е. 256х64), каждый байт = это типа пиксель, при этом избавляемся от координат (вместо всяких DownHL тупо INC H получается).
Вместо BIT n,(HL) делаем OR (HL) (аккумулятор заранее обнулён), при этом RET Z выбрасывает на следующуюю итерацию, а вот если нет то начинается интересное. Можно разглядеть что в аккуме появилось и далее по выбору:
Если там установлен скажем 7-й бит, то это никаким каком непроницаемая стенка (столбец) и выход из процедуры, складываем в буфер и переходим к следующему лучу.
Если там НЕ установлен 7-й бит, но в акке не нуль то значит кидаем в буфер столбиков эти координаты и возвращаемся к сканированию дальше.
Что имеем в итоге?
Прога которая строит-масштабит стенки идёт в обратную сторону по буферу и захватив тот байт который с 0 в 7-м бите отрисовывает не просто столбец, а сделав AND имеет номер текстурки который и отображает.
Таким макаром можно делать заборы, окна, двери, в общем как-бы альфа-канал у нас получается.
Надеюсь внятно объяснил, если не - разжую, только блин в асю стучись, или маякни там модераторам чтоб сделали тему закрытой для всех, кроме нас с тобой (ну подтянем ещё кого надо будет) и накалякаем наконец-то нормальный фреймовый 3д (даже сценарий есть).
- - - Добавлено - - -
Не хочет Unreal это хавать, хоть тресни
- - - Добавлено - - -
Заодно попробуй считать длину "в лоб" (по количеству пиксельных итераций), чтоб не было этого "закругления" стенок к краям экрана, и не надо будет корректить всякими умножениями на cos.






Ответить с цитированием