Текущий архив: 2004.10.24;
Скачать: CL | DM;
Внизarray of array of real; Найти похожие ветки
← →
Pa5ha (2004-07-26 23:29) [0]Мне нужно в свою прогу (3д-рендер) добавить з-буффер. Только размер экрана и как следствие буффера могут изменяться пользователем. Как лучше организовать хранение? Я хотел ч/з двумерный динамический массив. Вопрос: как изменять его размеры (так, чтоб он остался прямоугольным)?
Можете предложить и другие варианты организации буффера...
← →
Anatoly Podgoretsky © (2004-07-26 23:41) [1]SetLength(ar, N, M)
← →
Pa5ha (2004-07-27 00:09) [2]Гы, спасибо!!!
← →
Pa5ha (2004-07-27 00:46) [3]Тада ещё вопрос: а как Lenght заюзать?
← →
Ertong © (2004-07-27 07:13) [4]
> SetLength(ar, N, M)
Блин! А я всегда писал:
SetLength(ar,n);
for i:=0 to n-1 do SetLength(ar[n],m);
:))))))))))))))))))))))))))))
← →
Sapersky (2004-07-27 10:21) [5]SetLength(ar,n);
for i:=0 to n-1 do SetLength(ar[n],m);
Это всё Фаронов. У него в книжке (по Delphi4 - не знаю как в других) этот метод преподносится как единственно верный.
А из-за книги Краснова многие думают, что отладка под DirectDraw (Direct3D) невозможна.
В общем, не всякому печатному слову верь...
Тада ещё вопрос: а как Lenght заюзать?
Наверное, Length(ar) - одно измерение, Length(ar[0]) - другое. Но проще размер хранить в доп. переменных, ИМХО.
Можете предложить и другие варианты организации буффера...
Если уж всё реализуется на софтвере, можно попробовать какие-нибудь изощрённые методы, например, слышал я о иерархическом Z-буфере - что-то вроде мипмэппинга для Z-буфера, или разбивки по quadtree... не помню точно.
Точнее, не слышал, а читал в книжке "Компьютерная графика. Полигональные модели" Шикина и Борескова. Для написания софтверного движка - рекомендую.
← →
Ertong © (2004-07-27 10:41) [6]
> Это всё Фаронов.
Не читал :)
> А из-за книги Краснова многие думают, что отладка под DirectDraw
> (Direct3D) невозможна.
Щас читаю. Может кто-нибудь меня и здесь просветит:)
← →
Anatoly Podgoretsky © (2004-07-27 10:44) [7]Ertong © (27.07.04 07:13) [4]
Эта конструкция излишния для прямоугольных массивов.
← →
Ertong © (2004-07-27 10:58) [8]
> Эта конструкция излишния для прямоугольных массивов.
Я понимаю. Просто я не знал, что SetLength может прнять больше параметров и нигде об этом не написано(всмысле я не нашел:)
← →
Думкин © (2004-07-27 11:08) [9]> [8] Ertong © (27.07.04 10:58)
Multidimensional dynamic arrays в HelpeTo declare multidimensional dynamic arrays, use iterated array of ... constructions. For example,
type TMessageGrid = array of array of string;
var Msgs: TMessageGrid;
declares a two-dimensional array of strings. To instantiate this array, call SetLength with two integer arguments. For example, if I and J are integer-valued variables,
SetLength(Msgs,I,J);
allocates an I-by-J array, and Msgs[0,0] denotes an element of that array.
← →
Ertong © (2004-07-27 11:11) [10]
> [9] Думкин © (27.07.04 11:08)
Я искал в разделе по SetLength. Ладно, проехали.
← →
Sapersky (2004-07-27 12:19) [11]А из-за книги Краснова многие думают, что отладка под DirectDraw (Direct3D) невозможна.
Щас читаю. Может кто-нибудь меня и здесь просветит:)
Просвещаю: в полноэкранном режиме, с которого почему-то начинают изложение авторы большинства книжек, отлаживать действительно проблематично. Но в оконном проблем совершенно никаких; даже страшный и ужасный Lock не приводит к немедленному зависанию - можно поставить DDLOCK_NOSYSLOCK, но у меня трассировка работала даже без этого. Видимо, доработали в MS это место со времён первого DX.
Причины, по которым нельзя было бы использовать оконный режим, найти трудно - разве что использование 8-битных режимов, но кто их сейчас испольэует? Всякий порядочный движок, ИМХО, должен уметь работать и в окне, и на полном экране; я лично сделал ещё возможность переключения "на ходу".
В плане отладки меня гораздо больше раздражает DirectInput, т.к. у него устройства постоянно теряются. Но и то - давно этим занимался, может, в чём-то не разобрался просто.
← →
Ertong © (2004-07-27 12:57) [12]
> [11] Sapersky (27.07.04 12:19)
Сенкс за просвещение:)
← →
parovoZZ © (2004-07-27 19:15) [13]Конкретно по сабжу ещё вопросик: зачем вообще нужны динамические массивы? Ведь его размер можно установить раз и навсегда (и то по константе).
← →
Pa5ha (2004-07-27 22:21) [14]2 parovoZZ
Там же написано, что размер буффера меняется пользователем. Если делать сразу по максимуму, то память будет просто резервироваться и не использоваться - это неэкономично и глупо. А так мы берем стока, скока надо. Как вариант...
← →
parovoZZ © (2004-07-27 23:22) [15]Так SetLength позволяет изменять размер массива? Это правда?
← →
Думкин © (2004-07-28 07:16) [16]> [15] parovoZZ © (27.07.04 23:22)
Практика - лучший ответ, правда?
5 строчек кода или часы ожидания ответа в форуме.
← →
Ertong © (2004-07-28 07:24) [17]
> Это правда?
Для динамического массива ДА
← →
Pa5ha (2004-07-28 23:03) [18]2 parovoZZ
Как Вы видите, мы сдесь разговариваем о космосе...
← →
parovoZZ © (2004-07-28 23:32) [19]А я размер массива передавал в параметрах функции и чего-то у меня не работало. Сечас попробовал, но без выпендрёжа, блин горелый, действительно размер меняется. Это просто чедеса какие-то.
Страницы: 1 вся ветка
Текущий архив: 2004.10.24;
Скачать: CL | DM;
Память: 0.49 MB
Время: 0.093 c