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:



Par otazek k VBO

Seznam témat     Nová odpověď

Přihlásit se     Registrace     Zapomenuté heslo

Re: Par otazek k VBO

Autor: petr s.

22:16:56 09.07.2009

frca: vzhledem k tomu, že se OpenGL věnuju skoro 0.5 roku je tudíž pochopitelně velmi obtížné pro každého začátečníka se v záplavě "GL" informací okamžitě vyznat - zorientovat a nasměrovat tím správným směrem. To bys musel přepsat všechny "historické" tutoriály ...

Citovat příspěvek

 

Re: Par otazek k VBO

Autor: frca

22:38:44 03.07.2009

Doporučuju už konečně zapomenout na glext.h a používat GLEW. Fakt.
frca

Citovat příspěvek

 

Re: Par otazek k VBO

Autor: nou

13:16:34 03.07.2009

ano chyba ti glext.h. odporucam stiahnut z http://www.opengl.org/registry/api/glext.h
potom musis zavolat glGenBuffers = (PFNGLGENBUFFERSPROC) wglGetProcAddress("glGenBuffers"); alebo pouzit GLEW

Citovat příspěvek

 

Re: Par otazek k VBO

Autor: petr s.

13:07:40 03.07.2009

můžete mi prosím poradit - mám problém se zavoláním funkce glGenBuffers, proč mi compilátor hlásí:
error C3861: 'glGenBuffers': identifier not found

při editování mi studio nenabízí ani kontextový help, když edituju například glEnable je to v poho. Že by mi chyběl nějaký hedr ... ?

#include
#include
#include
#include
#include
#include "tank.h"

float mf_body_h;
float mf_turret_h;
float mf_turret_p;
unsigned int textureid;
unsigned int mn_nbuff;
unsigned int mn_actbuf;

void activ_vbo()
{
glGenBuffers(1,&mn_actbuf);
}


void draw_body()
{
glEnable(GL_CULL_FACE);
glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
glRotatef(mf_body_h*180.0f/3.14f, 0.0f, 0.0f, 1.0f);
glDrawElements(GL_QUADS, sizeof(tank_body) , GL_UNSIGNED_BYTE, tank_body);
}

Citovat příspěvek

 

Re: Par otazek k VBO

Autor: icek

10:22:58 31.05.2006

OK, dik vsem za rady...

Citovat příspěvek

 

Re: Par otazek k VBO

Autor: backslash

21:15:23 30.05.2006

tato situacia nastane len ked pouzivas indexovane VBO. Pretoze tie karty dokazu indexovat VBO len s s unsigned short(2byte = 65535).

Citovat příspěvek

 

Re: Par otazek k VBO

Autor: icek

18:06:58 30.05.2006

No tak to nevim, ja to doma testuju i na GF2MX a zobrazuje to dobre. Mam to jako blok dat (vertexi,normaly,tex koordinaty) a dohromady to urcite ma vetsi velikost... ja sem cetl neco o tom, ze je to jen pomalejsi.. a ze je lepsi kdyz je ta velikost do 65535

Citovat příspěvek

 

Re: Par otazek k VBO

Autor: backslash

17:55:28 30.05.2006

prave ze sa neda, akurat viem ze karty pred GF 4 (teraz neviem ci sa pocita aj GF 4MX ale asi ano) nedokazu psravne zobrazit VBO s viac vertexami.

Citovat příspěvek

 

Re: Par otazek k VBO

Autor: icek

17:42:27 30.05.2006

Takze to je nejak zavisle od typu graficke karty?? To sem nevedel... Da se ta velikost nejak zjistit?

Citovat příspěvek

 

Re: Par otazek k VBO

Autor: backslash

16:42:08 30.05.2006

ja osobne toto zatial poriesene nemam, pretoze zatial projekt stavam na GF FX a viac, i ked sa zacina pracovat na podpore starsich kariet takze sa to nejak riesit bude, na druhu stranu modely u mna takuto velkost nepresiahnu a terrain mam rozdeleny aj tak na mensie casti takze to nevidim ako problem.

Citovat příspěvek

 

Re: Par otazek k VBO

Autor: icek

10:58:42 30.05.2006

Dik, to sem si nevsiml... Uz to jede jak ma... Jeste by me zajimalo co delat kdyz ma nejaky model vic nez 65535 ?? narvat to do jednoho bufferu nebo rozdelit?

Citovat příspěvek

 

Re: Par otazek k VBO

Autor: backslash

21:41:39 29.05.2006

glBufferSubData (GL_ARRAY_BUFFER_ARB, 0, LastSize, tmp);
glBufferSubData (GL_ARRAY_BUFFER_ARB, LastSize,size, data);

neviem ci toto bol len preklep ale takto by to malo byt.

Citovat příspěvek

 

Re: Par otazek k VBO

Autor: icek

20:26:43 29.05.2006

Diky, pouzivam to na staticke veci, takze se obejdu bez toho. Ted se snazim o to aby velikost dat v kazdem bufferu byla co nejbliz k 65535. No a delam to asi takhle:

void * tmp = (void*) malloc(LastSize); // rezervace pameti, LastSize je velikost predchoziho bufferu

glGetBufferSubData (oldbuffer, 0, LastSize,tmp);
glDeleteBuffersARB( 1, &oldbuffer);

glGenBuffersARB( 1, &newbuffer );
glBindBufferARB( GL_ARRAY_BUFFER_ARB, newbuffer );
glBufferDataARB( GL_ARRAY_BUFFER_ARB, LastSize+size, NULL, GL_STATIC_DRAW_ARB );

glBufferSubData (newbuffer, 0, LastSize, tmp);
glBufferSubData (newbuffer, LastSize,size, data);

//size je velikost dat ktere se maji ulozit

je tohle spravny pristup??? protoze me to nejak nefunguje, vypada to jako by tam ty pridane data nebyli...

Citovat příspěvek

 

Re: Par otazek k VBO

Autor: backslash

20:08:58 29.05.2006

tak na inicializaciu a potom na dynamicku zmenu glBufferSubData, neviem si inak predstavit ako uzasne by isla applikacia s funkciou glBufferData volanou kazdy frame niekolko krat. To by fakt bol zahul.

Citovat příspěvek

 

Re: Par otazek k VBO

Autor: _shelll

16:51:11 29.05.2006

ja by som mapovanie buffera nepouzival, su s tym len problemy. aj ATi aj nVidia odporucaju pouzivat glBufferData.

Citovat příspěvek

 

Re: Par otazek k VBO

Autor: backslash

16:42:18 29.05.2006

rozdiel medzi glBufferData a tym mapovanim je v asynchronnosti, teda pokial zavolas glBufferData tak sa musi pockat na vykonanie prikazu, zatial co ked namapujes buffer, tak to ide pararelne, ale i tak by som si to najskor cele oskusal jak to funguje => pokial nepouzivas VBO na dynamicke veci to mapovanie je celkom zbytocne.

Citovat příspěvek

 

Re: Par otazek k VBO

Autor: JSH

0:21:57 29.05.2006

Data k bufferu se nedaji pridat. glBuferSubData dokaze jenom nahrazovat. Pokud je nutne neco pridat, tak se nemusi mazat buffer, ale staci pouzit glBufferData. Ta funkce totiz vytvari prostor pro data.

Citovat příspěvek

 

Re: Par otazek k VBO

Autor: icek

23:37:50 28.05.2006

ok, diky...
narazil jsem jeste na neco, da se pouzit glBufferSubData(), k "pridani" dat do bufferu? napr v bufferu je 10 floatu, muzu treba pridat dalsich 5 na konec? nebo musim, buffer smazat a vytvorit novy???

Citovat příspěvek

 

Re: Par otazek k VBO

Autor: JSH

23:29:46 28.05.2006

Presne tak.

Citovat příspěvek

 

Re: Par otazek k VBO

Autor: icek

23:15:29 28.05.2006

No to sem si myslel, ze se vytvori vic bufferu, ale jak se k nim pak da pristupovat??? jako kdyz bych ho pak chtel bindovat.. glBindBuffer(buffery[2]); takhle???

Citovat příspěvek

 

Re: Par otazek k VBO

Autor: JSH

22:52:58 28.05.2006

1)To cislo je pocet bufferu, ktere vytvori. Je to stejne jako u textur.
[code]
GLuint buffery[5];
glGenBuffers(5, buffery);
[/code]

2)Vrati ukazatel do bufferu, takze se do nej da pristupovat jako kamkoliv do pameti. Jinak se do nej jenom daji zapsat data pres glBufferData. Buffer se odmapuje pres glUnmapBuffer. Pak se da opet pouzivat pro vykreslovani.

Citovat příspěvek

 

Par otazek k VBO

Autor: icek

21:23:10 28.05.2006

Zdravim, pisu tridu ktera by mela vytvaret vertex buffery a narazil sem na veci kterym nerozumim.

1) co se stane kdyz misto glGenBuffersARB( 1, &buffer ); zavolam glGenBuffersARB( 5, &buffer );, proste kdyz tam bude cislo vetsi nez 1.

2) co dela funkce void *MapBuffer (enum target, enum access);, neco sem o ni nasel na netu, ale moc tomu nerozumim.

Dik moc za kazdou odpoved... Icek

Citovat příspěvek

 

 

 

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

Uživatelské jméno:

Heslo: