Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Heights [Delphi, Windows]


Nobody_1988 ©   (2006-11-07 21:47:00) 

Делаю карту как в Warcraft3( по виду ). Из прямоугольников.

for x := 0 to mWidth do
begin
 for y := 0 to mHeight do
  begin

glBindTexture(2D, t_name);
glBegin(GL_QUADS);

glVertex2f(); glVertex3f(x*32, y*32, z);
glVertex2f(); glVertex3f(x*32+32, y*32, z);
glVertex2f(); glVertex3f(x*32+32, y*32+32, z);
glVertex2f(); glVertex3f(x*32, y*32+32, z);

glEnd();

  end;
end;

Это будет вид сверху. Проблема в том, что я не знаю как лучше представить высоту(+- z).
Не хочется на каждый прямоугольник карты хранить 4 координаты Z(высоты) да и излишне это.
Как-нибудь бы на каждую уникальную точку карты хранить одну координату. Проблема в том как эти вершины потом доставать из массива. Уверен есть какой-нибудь простой способ...


@!!!ex   (2006-11-08 16:48:00) [1]

Ну так использую при постройке карты значение соседней высоты.
тоесть имеем карту:
1 2 3
4 5 6
7 8 9

Для отрисовки первого квадрата используем:
|1 2| 3
|4 5| 6
7  8  9

Для отрисовки второго:
1 |2 3|
4 |5 6|
7  8 9

И так далее.
Тут можно исользовать индексы.

Или если без массивов QUAD_STRIP


XProger   (2006-11-08 01:33:00) [2]

Nobody_1988, поднимаешь вершину, а полигоны строятся по индексам вершин. Так что все полигоны построенные на этой вершине "поднимутся"


Nobody_1988   (2006-11-07 23:07:00) [3]


> glVertex2f(); glVertex3f(x*32, y*32, z);
> glVertex2f(); glVertex3f(x*32+32, y*32, z);
> glVertex2f(); glVertex3f(x*32+32, y*32+32, z);
> glVertex2f(); glVertex3f(x*32, y*32+32, z);


Блин ошибся кое-где :)
glTexCoord2f(); glVertex3f(x*32, y*32, z);
Ну это не важно.


> Nobody_1988, есть массив вершин и массив индексов вершин
> по которым строятся полигоны...
> Почему излишне? Какого размера карта? Сколько мб памяти
> уйдёт на третью координату для каждой вершины?


Да карта та небольшая и никакие МБ не уйдут.
Просто неудобно потом исправлять в редакторе будет.
Допустим захочу поднять один прямоугольник(А) в центре карты: придется исправлять высоту каждого прямоугольника вокруг этого(А).
Хочу чтоб они(прямоугольники) взаимосвязаны были...

Может я мутно проблему описал? :)


XProger   (2006-11-07 22:16:00) [4]

Nobody_1988, есть массив вершин и массив индексов вершин по которым строятся полигоны...
Почему излишне? Какого размера карта? Сколько мб памяти уйдёт на третью координату для каждой вершины?


Наверх

Титульная страница Поиск, карта сайта Написать письмо