Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.04.02;
Скачать: CL | DM;

Вниз

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

 
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;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.038 c
9-1127590578
ILYA_
2005-09-24 23:36
2006.04.02
delphiX help


4-1136969518
menart
2006-01-11 11:51
2006.04.02
оброботка сообщение при записи диска


3-1139375320
Marat
2006-02-08 08:08
2006.04.02
Local Engine


2-1142416756
VitV
2006-03-15 12:59
2006.04.02
DBLookupComboBox-заполнение.


2-1142850343
Новичоккк
2006-03-20 13:25
2006.04.02
Работа с буффером





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