dev.gamez.lv Forum Index dev.gamez.lv
Latvian Game Developers Community
 
 FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups 

optimizācija
Goto page 1, 2  Next
 
dev.gamez.lv Forum Index -> OpenGL
View previous topic :: View next topic  
Author Message
s1
Guest





PostPosted: Thu Apr 07, 2005 2:28 pm    Post subject: optimizācija

Jā, optimizācija. Pirms poligonu skaits nepārsnierdza pāris tūkst., par to vispār nedomāju. Lieta tāda, viens objekts sastāv no ~2000 poligoniem, tad ir ap 100FPS. Ja pielieku klāt vēk 3 tādus pašus objektus - 50FPS. Vairāk nēesmu mēģinājis. Pamēģināju arī "Listus", taču no tā nekas nemainas. Vai ir kādi ieteikumi, kā var šo lietu optimizēt. Protams viena izeja ir - poligonu skaita samazināšana, es ceru ka tā nav vienīgā izeja.
Back to top
anggelus



Joined: 23 Feb 2005
Posts: 383
Location: Rīga (LV)

PostPosted: Thu Apr 07, 2005 2:41 pm    Post subject:

Pamēģini VBO ( Vertex Buffer Object ), protams, ja tu jau to nelieto. VBO izmantošana paātrina poligonu renderēšanu.
_________________
No comprendo lo que dice.
Back to top
View user's profile Send e-mail
s1
Guest





PostPosted: Thu Apr 07, 2005 3:06 pm    Post subject:

VBO! pirmā dzirdēšana, kas tas ir? Vai tas nav tipa glNewList(); utt. ?
Back to top
bubu
Indago Uzvarētājs
Indago Uzvarētājs


Joined: 23 Mar 2004
Posts: 3223
Location: Riga

PostPosted: Thu Apr 07, 2005 3:22 pm    Post subject:

Nav gan.
http://developer.nvidia.com/object/using_VBOs.html
http://steinsoft.net/index.php?site=Programming/Code%20Snippets/OpenGL/no11
Back to top
View user's profile Send e-mail
anggelus



Joined: 23 Feb 2005
Posts: 383
Location: Rīga (LV)

PostPosted: Thu Apr 07, 2005 3:26 pm    Post subject:

Palasi nVidia izdotos papīrus, tur diezgan labi aprakstīts kā optimizēt OpenGL programmas.
Un piemēru arī daudz ir gandrīz katram papīram Smile
_________________
No comprendo lo que dice.
Back to top
View user's profile Send e-mail
s1
Guest





PostPosted: Fri Apr 08, 2005 10:10 am    Post subject:

paldies par adresēm, bet varbūt kāds no jums grib pierādīt savu zināšanu līmeni un erudīciju, pārtūlkojot šo kodu uz Delfīnu Laughing
Code:

if (strstr(glGetString(GL_EXTENSIONS,"ARB_vertex_buffer_object"))
{
   //get function pointers using SDL_GL_GetProcAddress(..)
   // (could be using wglGetProcAddress(..) too)
   PFNGLBINDBUFFERARBPROC pglBindBufferARB = (PFNGLBINDBUFFERARBPROC)
       SDL_GL_GetProcAddress("glBindBufferARB");
   PFNGLGENBUFFERSARBPROC pglGenBuffersARB = (PFNGLGENBUFFERSARBPROC)
       SDL_GL_GetProcAddress("glGenBuffersARB");
   PFNGLBUFFERDATAARBPROC pglBufferDataARB = (PFNGLBUFFERDATAARBPROC)
       SDL_GL_GetProcAddress("glBufferDataARB");

   supportsVertexBuffer = true;
}
Back to top
bubu
Indago Uzvarētājs
Indago Uzvarētājs


Joined: 23 Mar 2004
Posts: 3223
Location: Riga

PostPosted: Fri Apr 08, 2005 12:41 pm    Post subject:

Īsti nezinu kādu datu tipu atgriež fja SDL_GL_GetProcAddress(), bet laikam šādi vajadzētu strādāt:
Code:
var
    glBindBufferARB: procedure(target: GLenum target; buffer: GLuint); stdcall;
    glGenBuffersARB: procedure(n: GLsizei; buffers: PGLuint); stdcall;
    glBufferDataARB: procedure(target: GLenum; size: GLsizei; data: PGLvoid; usage: GLenum); stdcall;
   
if (strpos(glGetString(GL_EXTENSIONS, pChar("ARB_vertex_buffer_object")))<>nil) then begin
    glBindBufferARB := SDL_GL_GetProcAddress(pChar("glBindBufferARB"));
    glGenBuffersARB := SDL_GL_GetProcAddress(pChar("glGenBuffersARB"));
    glBufferDataARB := SDL_GL_GetProcAddress(pChar("glBufferDataARB"));

   supportsVertexBuffer := true;
end;


P.S. varēji jau paņemt kādu gatavu Delphi OpenGL bibliotēku ar visiem extensioniem, kur viss šitais jau būs gatavs, piemēram: http://www.delphigl.com/download.php?cat=5 (OpenGL 1.5 Header dglOpenGL.pas)


Last edited by bubu on Fri Apr 08, 2005 9:43 pm; edited 1 time in total
Back to top
View user's profile Send e-mail
s1
Guest





PostPosted: Fri Apr 08, 2005 5:48 pm    Post subject:

bubu, apbrīnojamas zināšanas!
Beidzot www.delphigl.com ir arī angliski!
Back to top
Angel



Joined: 02 Jan 2005
Posts: 113
Location: Latvija

PostPosted: Fri Apr 08, 2005 10:46 pm    Post subject:

Vai nav vienalga kaadaa valodaa? vaacu valodu vispaar nezinu bet kaut kaadu nojausmu no taa guut var... Vaacu jau ir ljoti liidziiga anglju valodai, takaa lasi un tildee ir latv-vacu , ja nemaldos...
Back to top
View user's profile Send e-mail
Kamazs
Guru
Guru


Joined: 17 Jan 2003
Posts: 829
Location: The glorious ancient city of Loja

PostPosted: Sat Apr 09, 2005 7:17 am    Post subject:

Quote:
Vai nav vienalga kaadaa valodaa? vaacu valodu vispaar nezinu bet kaut kaadu nojausmu no taa guut var...

Nee, man, piemeeram, pilniigi nav vienalga. Es tutorus vai manuaaljus labaak lasu tieshi angliski, ne latviski, ne krieviski, ne vaaciski, ne itaaliski, ne spaaniski, ne franciski (lai gan teoreetiski zinu visas nosauktaas). Sauc to par muljkjiigu aizspriedumu, bet angliski man ir daudz saprotamaak un skaidraak.
_________________
...un es uzskatu, ka Fallout ir etalons
Back to top
View user's profile Send e-mail Visit poster's website
anggelus



Joined: 23 Feb 2005
Posts: 383
Location: Rīga (LV)

PostPosted: Sat Apr 09, 2005 9:35 am    Post subject:

Man gan likās te bija runa par pārtulkošanu no C uz Delphi Smile
Bet, ja jau par šo aizsālās saruna, tad es ar labāk lasu angļu valodā, arī liekas daudz saprotamāk. Iespējams dēļ tulkotajiem terminiem ir grūtāk saprotamas pamācības citās valodās.
_________________
No comprendo lo que dice.
Back to top
View user's profile Send e-mail
s1
Guest





PostPosted: Sat Apr 09, 2005 7:53 pm    Post subject:

Iskatās, ka daži jau novirzījušie no tēmas Laughing . Tas tā, runājot par optimizāciju, izmēģināju anggelus ieteikti vbo. Tiešām ātrdarbība pieauga aptuveni 2x. Vai šis rādītājs ir normāls, man pašam liekas, ka ātrdarbībai vajadzēja pieaugt, nu, vismaz kādas 3-4 reizes. Kāda ir jūsu pieredze?
Back to top
AL_Edgars
Guest





PostPosted: Mon Apr 11, 2005 2:15 pm    Post subject:

Ko lai es saku ar saviem 100 000 poligoniem?
Tas ir 65 objekti ar katrs savu daudzumu. Lai kas interesanti, tieši lielie objekti pēc platības noēd rersursus. Ja mums ir 5000 poli māja, tad tā noēdīs vairāk nekā, ja man būs lode ar 10 000. Tāpēc, ka vēl svarīgi ir tekstūras. Tās tev ir 2038*2048 vai 128*128 pixels? Tā ir galvenā problēma.
Back to top
s1
Guest





PostPosted: Mon Apr 11, 2005 9:27 pm    Post subject:

Runājot par textūrām, ir radusies problēma. Kā lai uzbindo katram poligonam noteiktu textūru?
Līdz šim, ciklā pirms glVertex, vienkārši uzbindoju textūru, bet tagad cikla nav. Šādi tagad tiek uzzīmēta grafika:
Code:

//izveidojam buferobjektu
glGenBuffersARB(1, @bufferObject);
//sagatavojam to
glBindBufferARB(GL_ARRAY_BUFFER_ARB, bufferObject);
//saglabājam buferī datus
glBufferDataARB(GL_ARRAY_BUFFER_ARB, sizeof(data), @data, GL_STATIC_DRAW_ARB);

glInterleavedArrays(GL_T2F_V3F, SizeOf(TVertex), nil);
glDrawArrays(GL_TRIANGLES, 0, 3);


Vai ir kādi ierosinājumi?
Back to top
GiGa
Indago Uzvarētājs
Indago Uzvarētājs


Joined: 25 Sep 2003
Posts: 887

PostPosted: Mon Apr 11, 2005 9:31 pm    Post subject:

Jaaziimee pa daljaam, taksh. Vienkaarshi uztaisi VBO katram objektam ar citu textuuru, un dari: bind/render; bind/render; pa vidu glDrawArrays(GL_TRIANGLES, 0, 3); nu nekaadiigi nesamainiisi textuuru.
_________________
Back to top
View user's profile Send e-mail
Display posts from previous:   
dev.gamez.lv Forum Index -> OpenGL All times are GMT + 2 Hours
Goto page 1, 2  Next
Page 1 of 2

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group