Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Игры";
Текущий архив: 2006.04.02;
Скачать: [xml.tar.bz2];

Вниз

Рисование большого ландшафта   Найти похожие ветки 

 
Ricks ©   (2005-09-19 22:57) [0]

Каким образом лучше всего рисовать большой ландшафт, если учитывать что на каждый квадрат накланывается тайл текстуры (изображение 512x512). GL_TRIANGLE_STRIP уже на 32x32 ландшафте тормозит...


 
Signate ©   (2005-09-19 23:49) [1]

Попробуй гео-маппинг


 
Zer0 ©   (2005-09-19 23:50) [2]

код в студию.


 
Signate ©   (2005-09-20 00:00) [3]

http://www.gamedev.ru/articles/?id=30125&page=2


 
Ricks ©   (2005-09-20 00:41) [4]

Код:

var
 Mesh     : array [ 0..sqr(n) * 3 ] of TVector;
 TC       : array [ 0..sqr(n) * 3 ] of TBasicTextureVectors;
 NV       : Integer;
 a        : single;
 T        : Cardinal;

implementation

procedure BuildMesh;
var x, z, k : integer;
   d       : single;
begin
d:=n div 2;

k:=0;
 for z:=0 to pred(n) do begin

  if z mod 2 = 0 then begin
   x:=0;
   while x <= n do begin

    if (x mod 2 = 0)
     then TC[k]:=TexCoords( 7/8 + 1/200, 1/8 - 1/200 )
     else TC[k]:=TexCoords(   1 - 1/200, 1/8 - 1/200 );

    Mesh[k]:=Vector( x - d, 0,     z  - d);
    Inc(k);

    if (x mod 2 = 0)
     then TC[k]:=TexCoords( 7/8 + 1/200, 1/200 )
     else TC[k]:=TexCoords(   1 - 1/200, 1/200 );

    Mesh[k]:=Vector( x - d, 0, z + 1  - d);
    Inc(k);

    inc(x);
   end;
  end else begin
   x:=n;
   while x >= 0 do begin
    if (x mod 2 = 1)
     then TC[k]:=TexCoords( 7/8 + 1/200, 1/200 )
     else TC[k]:=TexCoords(   1 - 1/200, 1/200 );
    Mesh[k]:=Vector( x - d, 0, z + 1 - d );
    Inc(k);

    if (x mod 2 = 1)
     then TC[k]:=TexCoords( 7/8 + 1/200, 1/8 - 1/200 )
     else TC[k]:=TexCoords(   1 - 1/200, 1/8 - 1/200 );
    Mesh[k]:=Vector( x - d, 0,     z - d );
    Inc(k);
    dec(x);
   end;
  end;

 end;

NV:=pred(K);
end;

procedure TMainForm.Render;
var x : integer;
begin
glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT);
glLoadIdentity;

gluLookAt( (6) * cos(a), 10, (6) * sin(a), 0, 0, 0,  0, 1, 0);

glBindTexture(GL_TEXTURE_2D, T);
glBegin(GL_TRIANGLE_STRIP);
 for x:=0 to NV do begin
  glTexCoord2fv(@TC[x]);
  glVertex3fv(@Mesh[x]);
 end;
glEnd;
end;


 
NE_Parovoz ©   (2005-09-20 16:34) [5]

меш, можно побить на куски, и в VBO, потом отрисовка с проверкой попадания AABB в frustum


 
XProger ©   (2005-09-20 18:25) [6]

Ricks, в том же XTropper реализовано с ландшафтом 128х128...
NE_Parovoz, VBO для низкополигональных моделей < 10000 не рулит абсолютно!


 
A22 ©   (2005-09-20 18:40) [7]

Оффтоп: я скоро начну истерически смеяться при виде набора символов "XTropper"

Ricks, статься на геймдеве хорошая, нет в нет только Occlusion теста - тест на перекрытие одного объекта другим. Например, ближайшим холмом остальных 99% твоего ландшафта. На эту тему статься есть на dtf.ru - почитай. Сделать большой ландшафт быстро выводимым - реальность :)


 
NE_Parovoz ©   (2005-09-20 19:33) [8]

XProger, ну ниже скорость точно не станет


 
XProger ©   (2005-09-20 21:39) [9]

NE_Parovoz, ниже чем у glDrawElements как ни странно :)


 
NE_Parovoz ©   (2005-09-20 23:35) [10]

//offtop
счас потестю, вот для 32k треугов c текстурами(и шейдером).

все 32k одним стрипом:
glDrawArrays VBO ~9.5*10^6 tri/sec
glDrawArrays       ~7.5*10^6 tri/sec

это же, но без тектур(и без ш.)
glDrawArrays  VBO (!) ~1.15*10^9 tri/sec (упала скорость
glBufferSubDataARB() в ~10 раз (usage=GL_STREAM_DRAW_ARB))
glDrawArrays             ~13*10^6 tri/sec

а тепер лоу-поли(с текстурами и без ш.)

286 - GL_TRIENGLES
glDrawElements  VBO     ~12.5*10^6 tri/sec
glDrawElements             ~4.5*10^6 tri/sec

всё это на GF4 MX440 128mb vram agp8x(работает на 4x :)

XProger, как видиш у меня разница неплохая, и именно на индексированной (да ищщё и low-poly) геометрии


 
XProger ©   (2005-09-21 01:44) [11]

500 моделей по 300 поликов на 3-6 фпс дают меньше с использованием VBO
GF FX 5200 128 mb AGP 4x



Страницы: 1 вся ветка

Форум: "Игры";
Текущий архив: 2006.04.02;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.07 c
9-1126641599
Ricks
2005-09-13 23:59
2006.04.02
Нахождение высоты в заданной точке


15-1141965621
Steepe Wolf
2006-03-10 07:40
2006.04.02
QuickReport для BDS 2006


2-1142500691
Fenix
2006-03-16 12:18
2006.04.02
Встевить рисунок в StatusBar


3-1139309450
John_Doe
2006-02-07 13:50
2006.04.02
Referential Integrity,не пускает удалить.


4-1137331762
Volf_555
2006-01-15 16:29
2006.04.02
Как закрыть всплывающее меню в SystemTray когда оно теряет фокус?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский