Текущий архив: 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