Assembler, графика, как сделать еффект расстояния, алгоритм уменьшения ( увелич. ) изображения?
Хочу сделать ну очень простую 3д "сцену" ну на самом деле 2д. Что-то в стиле игры дум. Не планирую ничего сделать ни текстур пола ни неба никакого ничего. Только сцена одноцветный пол, возможность передвигать и какой-то спрайт на сцене.
( Использую только прерывания BIOS, видео режим 320х200, 256 цветов из INT 10h )
Для ефекта 3д надо чтоб чем спрайт далее тем меньшим он казался. Каким алгоритмом можно делать спрайт меньше.
Мне в голову пока приходили варианты:
- Сделать маленький но качественный спрайт который при нужности будет делаться больше. Тоесть чем обьэкт ближе тем больше его надо будет увеличить, и качество потеряется но все-же. ( Хотя для небольшого расстояния можно и другой спрайт попытаться использовать ( но не уверен хорош ли этот вариант ) )
- Сделать большой спрайт который будет уменьшаться, ( тут я даже не понимаю как его адекватно сжать, все что приходит мне в голову сложно и криво, например Один пиксель должен содержать в себе цвета соседей, во первых незнаю как реализовать, во вторых а что если будет один черный пиксель а вокруг него много белых что в итоге получиться. Он просто же исчезнет )
Что скажете, какой метод лучше использовать, какие сложности я не учел, или может знаете другие?
PS: Не особо силен в программирование, все чисто по фану.