.[ ČeskéHry.cz ].
OpenGL render polygonu s vertex a index bufferem a rozsahy

 
odeslat nové téma   Odpovědět na téma    Obsah fóra České-Hry.cz -> 3D API / 3D Enginy
Zobrazit předchozí téma :: Zobrazit následující téma  
Autor Zpráva
PCmaniak



Založen: 07. 10. 2007
Příspěvky: 6

PříspěvekZaslal: 23. listopad 2007, 22:13:33    Předmět: OpenGL render polygonu s vertex a index bufferem a rozsahy Odpovědět s citátem

zdarvim mam mensi problem prosim neporadil by mi nekdo jak mohu vykreslit v OGL polygon pomoci Index a Vertex Bufferu ?

Delam kresleni Quake III BSP. Mam start_vertex, num_verts, start_index, num_indexes.

dekuji
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Marek



Založen: 28. 07. 2007
Příspěvky: 1782
Bydliště: Velká Morava

PříspěvekZaslal: 25. listopad 2007, 18:11:50    Předmět: Odpovědět s citátem

Vertex a index buffery vytvoříš pomocí sekvence příkazů: glGenBuffers, glBindBuffer, glBufferData, glBindBuffer(.., 0). Vždycky na konci všeho nastavuj nulový buffer - to vrací původní stav tzn. vypíná VBO. Každý z příkazů bere typ bufferu: GL_ARRAY_BUFFER pro vertexy a GL_ELEMENT_ARRAY_BUFFER pro indexy.

Rendering provádíš přes vertex arrays, tzn. nejdřív nastavíš odpovídající attributy vertexů pomocí glVertexPointer, glNormalPointer, glTexCoordPointer... případně jejich obecná varianta glVertexAttribPointer, která přiřadí atribut přímo konkretní proměnné v GLSL shaderu, kde si pak s těma datama můžeš dělat, co chceš. Před každým gl*Pointer příkazem ho musíš zapnout pomocí glEnableClientState, jinak se daný atribut nepoužije. Na konci renderingu je zas všechny povypínáš pomoci glDisableClientState. Dále před každým gl*Pointer příkazem musíš nastavit odpovídající vertex buffer pomocí glBindBuffer, pointer v gl*Pointer potom nebude ukazovat do RAM, ale bude to jenom offset v tom bufferu ve VRAM, tedy ideálně 0, pokud chceš začít od začátku bufferu.

Až máš všechno nastavené, samotné vykreslení provedeš pomocí glDrawElements nebo glDrawRangeElements, kde se zadává pointer na index buffer. Před tímto příkazem opět pomocí glBindBuffer nastavíš odpovídající index buffer, aby se bral z VRAM. Na konci renderingu nezapomenout zpět nastavit nulové buffery pomocí glBindBuffer.

Teď víš, čeho se držet a jak by ten rendering měl asi vypadat. Ostatní informace a dokumentaci si najdeš na netu (google, opengl.org/sdk/docs/man). Neuváděl jsem tu schválně zdroják - jsi programátor a tedy tvým úkolem je převést slovní popis do vlastního kódu.
_________________
AMD Open Source Graphics Driver Developer
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
PCmaniak



Založen: 07. 10. 2007
Příspěvky: 6

PříspěvekZaslal: 30. listopad 2007, 22:16:28    Předmět: Odpovědět s citátem

diky omlouvam se za tak pozdnou reakci ale uz jdem dostal odpovedi na gamedev jinak dekuji
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Zobrazit příspěvky z předchozích:   
odeslat nové téma   Odpovědět na téma    Obsah fóra České-Hry.cz -> 3D API / 3D Enginy Časy uváděny v GMT + 1 hodina
Strana 1 z 1

 
Přejdi na:  
Nemůžete odesílat nové téma do tohoto fóra
Nemůžete odpovídat na témata v tomto fóru
Nemůžete upravovat své příspěvky v tomto fóru
Nemůžete mazat své příspěvky v tomto fóru
Nemůžete hlasovat v tomto fóru


Powered by phpBB © 2001, 2005 phpBB Group


Vzhled udelal powermac
Styl "vykraden" z phpBB stylu MonkiDream - upraveno by rezna