Vad är en OpenGL® Vertex Buffer?

En Open Graphics Library® (OpenGL®) vertexbuffert är ett område av datorminne som ofta finns direkt på ett grafikkort som ger mycket snabb åtkomst till en rad hörn och deras egenskaper. Oftast används en OpenGL® vertexbuffert för att skapa ett vertexbuffertobjekt (VBO), vilket gör att objekt inom en tredimensionell (3D) scen kan renderas som en del av en visningslista och inte i omedelbart läge. Ibland kan dock en vertexbuffert användas utanför en VBO för att lagra information om ett objekt eller för att underlätta transformationer i komplexa modeller. Det bör noteras att en vertexbuffert inte behöver finnas i grafikkortets minne, eftersom den kan allokeras som vilken datastruktur som helst. Om OpenGL® vertexbufferten ska användas som en del av en VBO, måste grafikkortet som används stödja det speciella OpenGL® VBO-tillägget för att säkerställa att bufferten placeras i grafikminnet.

På den mest grundläggande nivån är en OpenGL® vertexbuffert bara en enkel buffert, ett allokerat minnesområde där data kan lagras. Det blir en vertexbuffert när en vertexarray lagras i den. En OpenGL® vertex array är en array av datastrukturer som definierar alla egenskaper hos enskilda hörn. Denna information kan inkludera X-, Y- och Z-positionerna för vertexet i 3D-scenen, färgen på vertexet, det normala och andra egenskaper.

I omedelbar lägesrendering exekveras OpenGL®-kommandon direkt när de anropas från ett program. Det är onödigt i dessa fall att ha en vertexarray, eftersom kommandona för att placera och rita en vertex kan ges direkt till hårdvaran, även om detta kan orsaka allvarliga prestandaproblem. För icke-omedelbar lägesrendering måste informationen om ett 3D-objekt eller -modell först placeras i en vertexarray så att den har en struktur som OpenGL® enkelt kan tolka; den matrisen måste sedan lagras i ett speciellt minnesområde som kallas en OpenGL® vertexbuffert.

I sig själv har vertexbufferten inte nödvändigtvis några speciella attribut förutom att vara en komplett samling information som används för att rita ett objekt. När OpenGL® vertexbufferten omvandlas till ett OpenGL® vertexbuffertobjekt genom OpenGL-tillägget, inträffar dock en speciell händelsesekvens för att hjälpa till att optimera ritningen av objektet som definieras i vertexbufferten. Bufferten tilldelas och lagras nämligen i grafikkortsminnet, på serversidan av den klient-serveruppsättning som OpenGL® använder. Vissa beräkningar kan också utföras i förväg på VBO så att den kan renderas så snabbt som möjligt. Utanför en VBO får en vanlig vertexbuffert vanligtvis inte denna behandling och kan allokeras och användas som vilken annan datatyp som helst.