Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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 в Helpe

To 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.51 MB
Время: 0.027 c
14-1096877994
Слоник
2004-10-04 12:19
2004.10.24
Сетевая обучающая игровая программа free-ware


4-1095444827
Antonmm2
2004-09-17 22:13
2004.10.24
Нажатие кнопок другого приложения


1-1097308276
Wish
2004-10-09 11:51
2004.10.24
Как сделать чтобы контролы не моргали


14-1096614062
Nikolay M.
2004-10-01 11:01
2004.10.24
Еще одно обращение к студентам...


14-1096953586
Layner
2004-10-05 09:19
2004.10.24
Переносной носитель памяти USB Flash