Builder.cz - Informacni server o programovani

Odběr fotomagazínu

Fotografický magazín "iZIN IDIF" každý týden ve Vašem e-mailu.
Co nového ve světě fotografie!

 

Zadejte Vaši e-mailovou adresu:

Kamarád fotí rád?

Přihlas ho k odběru fotomagazínu!

 

Zadejte e-mailovou adresu kamaráda:



VBO - redukce jeho "volání"

Seznam témat     Nová odpověď

Přihlásit se     Registrace     Zapomenuté heslo

Re: VBO - redukce jeho "volání"

Autor: Eosie

17:25:45 04.01.2009

glIndexPointer slouží na indexy do palety barev myslím. Trochu zastaralé.

GL_ARB_vertex_array_object může tady dost pomoct.

Citovat příspěvek

 

Re: VBO - redukce jeho "volání"

Autor: S.I.D

11:23:56 04.01.2009

[bold]ELEMENT_BUFFER [/bold] neznám (ješte jsem ho nepotřeboval). Jdu se na to podívat. Moooc díky (tu)

Citovat příspěvek

 

Re: VBO - redukce jeho "volání"

Autor: nou

11:22:36 04.01.2009

vytvoris este jeden buffer pre indexy
potom v glBufferDataARB(GLenum target, GLsizei size, const void* data, GLenum usage) das ako target GL_ELEMENT_ARRAY
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, vbo_index);
vykreslis pomocou glDrawElements alebo glDrawRangeElements

ak by si mal tych objektov velmi vela a su prakticky rovnake tak mozes pouzit instancing co je dost nova vec ale je celkom podporovan aj starsimi kartami (2-3 roky) preberalo sa to par topicov naspet.

Citovat příspěvek

 

Re: VBO - redukce jeho "volání"

Autor: JSH

11:09:58 04.01.2009

Myslel jsem tím vytvořit si i ELEMENT_BUFFER a ty ppFaces do něj nacpat stejně jako ty vertexy a texturové koorináty.

Citovat příspěvek

 

Re: VBO - redukce jeho "volání"

Autor: S.I.D

11:02:48 04.01.2009

Pravda, to zapínání a vypínání texturování jsem přehlédl. Po opravě se výkon zvedl o cca 40 procent. Díky (tu)

Jen si nejsem jist zda dobře chápu "Taky bych do VBO nacpal i ty indexy".
Mám použít "glIndexPointer"?

Citovat příspěvek

 

Re: VBO - redukce jeho "volání"

Autor: JSH

10:26:43 04.01.2009

To bohužel nejde. Těch 5000 objektů sice nějaká režie je, ale neúnosná by snad být neměla. Jestli není problém taky v tom přepínání stavů. To zapínání a vypínání texturování může způsobit vyprázdnění pipeline. Taky bych do VBO nacpal i ty indexy. Ty se pokaždé přenášejí, což je větší režie, než jedno volání funkce.

Citovat příspěvek

 

VBO - redukce jeho "volání"

Autor: S.I.D

9:51:44 04.01.2009

Zdravím,
mám následující problém. Potrebuji poslat na graf. kartu větší množství samostatných objektů (počet není konstantní). Každý objekt má svůj materiál, barvu, normály atd..., jenže v případě např. 5 000 objektu je režie spojená s voláním fcí. OpenGL neůnosná (neřešme teď BSP, Octtree, instancing atd...). Aktuálně posílám na GK pouze pole indexů meshů. Jenže pro 5 000 objektů! To je moc. A to nepočítám nastavení barev atd. Napadlo mne pouzít např. jedno pomocne pole objahující "indexy indexů" meshe a to potom naráz odeslat. Nemám ale tušení zda je to vůbec možné. Neexistuje náhodou něco jako "glCallLists" u "Display list" ??

Jen pro představu je přiložena část kódu.

[bold]
for(int j=0; jnumOfObjects; j++)
{[/bold]
// irelevantni
// if (!frustum.CubeInFrustum(model->pObject[j].boundingBox))
// continue;

// irelevantni
/*
if (model->pObject[j].bHasTexture)
{
glEnableClientState(GL_TEXTURE_COORD_ARRAY);
glEnable(GL_TEXTURE_2D);

glBindTexture(GL_TEXTURE_2D, model->pObject[j].textureID);
glBindBufferARB(GL_ARRAY_BUFFER_ARB, model->pObject[j].pVBOTexCoordID);
glTexCoordPointer(2, GL_FLOAT, 0, (char*) NULL);
}
else
{
glDisable(GL_TEXTURE_2D);
glDisableClientState(GL_TEXTURE_COORD_ARRAY);
}
*/
[bold]
// ?? CO S TIM ?? !! 5 000 krát resp. "model->numOfObjects" !!!!!!!!
glBindBufferARB(GL_ARRAY_BUFFER_ARB, model->pObject[j].pVBOVertexID);
glVertexPointer(3, GL_FLOAT, 0, (char*) NULL);
glDrawElements(GL_TRIANGLES, model->pObject[j].numOfFaces*3, GL_UNSIGNED_INT, model->pObject[j].ppFaces);
}
[/bold]

Citovat příspěvek

 

 

 

Přihlášení k mému účtu

Uživatelské jméno:

Heslo: