Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.97.14.86] |
|
Сообщ.
#1
,
|
|
|
Решил сделать на Turbo Pascal (да, именно Borland Pascal 7.0) мини 3D - движок (программный, естессно). До этого уже ни один такой создал, правда на нормальных языках и средах (C++, DirectX). Цель создания на Pascal - спортивный интерес + показать некоторым, что можно из этого досовского старья выжать (с турбо-подхватом ). Конечно, ограничение в 500 с хвостом КБ ОЗУ накладывает серьезный отчечаток, да и 16 цветов... Тем ни менее, всеб и ни чего, даже текстуру можно натянуть (про освещение лучше вообще не вспоминать ). Да вот вывод пикселя через PutPixel уж больно медленный, получиться слайд-шоу с FPS < 1. Задача - наименьшими усилиями создать систему быстрого вывода пикселей. В идеале, конечно, это была б система, базирующаяся на graph.tpu режимах с возможностью линейной записью в видеопамять (построчно). Варианты с использованием ASM хуже, но на крайний случай подойдут. Знатоки Pascal, подскажите, как сие дело реализовать! Через Get/Put Image, или где-то подшаманить? Если можно, то с ссылками на примеры. Заранее спасибо.
|
Сообщ.
#2
,
|
|
|
Может, поможет: Програмирование графики без модуля GRAPH (сообщение #121212)
Добавлено А вообще, в книжке Немнюгина есть описание быстрого вывода. |
Сообщ.
#3
,
|
|
|
Да мне б наоборот, лучше б с GRAPH совместить, тут можно и шрифты выводить не парясь, и примитивы легко рисовать. Да и заморачиватья с прерываниями неохота. Может кто знает, в каком формате храниться GetImage/PutImage? Теоретически, можно былоб писать память в массиве, а потом его установить через PutImage.
|
Сообщ.
#4
,
|
|
|
Цитата AlexanderV @ Да мне б наоборот, лучше б с GRAPH совместить, тут можно и шрифты выводить не парясь, и примитивы легко рисовать. Согласен на 100%. Прочитать об GetImage можно по-моему с сайта в разделе исходников, т.е. sources.ru |
Сообщ.
#5
,
|
|
|
AlexanderV
Люблю Borland Pascal 7.0 Для быстрого вывода лучше всего использовать прямой вывод в видео память по адресу $A000:0 address:=320*y+x Mem[$A000:address]:=color; Дальше только алгоритмы для быстрого вывода. Насчет ассемблера, можно обходиться без него но лучше оптимизировать часть выода на нем. Лучше всего для графики подходит режим 320*200*8бит Я вобще предпочитаю через ассемблер выставлять режим, можно и стандартыми средствами паскаля. asm mov ax,13h ; Графический режим int 10h end; asm mov ax,03h ; Текстовый int 10h end; Еще для того чтобы не было морганий нужно бы выводить графику сначало в буфер, а затем его копировать. move - достаточно быстро скопирует. |
Сообщ.
#6
,
|
|
|
Цитата AlexanderV @ Может кто знает, в каком формате храниться GetImage/PutImage? Отсюда: Работа с картинками (сообщение #448892) tBitmap = Record {растровая картинка (стандартное представление BitMap в модуле Graph)} xSize, {горизонтальный размер (- 1)} ySize :Word; {вертикальный размер (- 1)} data :Array[0..0] {цвета точек} Of Byte; End; |
Сообщ.
#7
,
|
|
|
AlexanderV, поищи в инете либу Xlib. Она заточена под игровые 256-ти цветные видеорежимы(от 320x200 до 360x480), поддерживает мышь и вывод текста, имеет в своем составе функции для вывода полигонов, насколько помню даже по Guro, естественно подерживает многостраничность и split-screen. Есть версии как под Cи так и под паскаль. Написана на асме, и очень шустрая.
Если не найдешь, пиши, вышлю. |
Сообщ.
#8
,
|
|
|
Надо очень сильно постараться, чтобы НЕ найти XLib, тем более что лежит она на сайте Сурсов: http://pascal.sources.ru/graph/xlibp202.htm
|