Главная страница
    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.049 c
2-1142855030
еуые
2006-03-20 14:43
2006.04.02
как перебрать все Item в MainMenu


2-1142416011
KyRo
2006-03-15 12:46
2006.04.02
Функция задержки


15-1141971896
ZeroDivide
2006-03-10 09:24
2006.04.02
Отчисления Open Source проекту


1-1141138844
RomanH
2006-02-28 18:00
2006.04.02
Изменение индекса в меню


2-1142942855
Scavenger
2006-03-21 15:07
2006.04.02
Ping ПК





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский