Vad är en OpenGL® Vertex-buffert?
En Open Graphics Library® (OpenGL®) vertexbuffert är ett område i datorminne som ofta finns direkt på ett grafikkort som ger mycket snabb åtkomst till en rad vertikaler 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 återges som en del av en visningslista och inte i omedelbart läge. Ibland kan emellertid en toppunktbuffert användas utanför en VBO för att lagra information om ett objekt eller för att underlätta transformationer på komplexa modeller. Det bör noteras att en toppunktbuffert inte behöver placeras i grafikkortminnet, eftersom den kan allokeras som vilken datastruktur som helst. Om OpenGL® vertexbufferten kommer att användas som en del av en VBO, måste grafikkortet som används stödja den speciella OpenGL® VBO-förlängningen 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 tilldelat minnesområde där data kan lagras. Det blir en toppunktbuffert när en toppunktmatris lagras i den. En OpenGL® vertex array är en matris med datastrukturer som definierar alla egenskaper hos enskilda vertikaler. Denna information kan inkludera topp-, X-, Y- och Z-platserna i 3D-scenen, toppens färg, de normala och andra egenskaper.
Vid återgivning av omedelbart läge exekveras OpenGL®-kommandon direkt som de kallas inifrån ett program. Det är onödigt i dessa fall att ha en toppunktuppsättning, eftersom kommandona för att placera och rita en toppunkt kan ges direkt till hårdvaran, även om det kan orsaka allvarliga prestationsproblem. För återgivning av icke-omedelbar läge måste informationen om ett 3D-objekt eller modell först placeras i ett toppmaterial så att det har en struktur som OpenGL® enkelt kan tolka; den arrayen 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 andra speciella attribut än att vara en komplett insamling av information som används för att rita ett objekt. När OpenGL® vertexbufferten konverteras till ett OpenGL® vertexbuffertobjekt genom OpenGL-förlängningen, inträffar emellertid en speciell händelseföljd för att optimera ritningen av objektet som definieras i vertexbufferten. Nämligen tilldelas och lagras bufferten i grafikkortminnet på serversidan av klient-serverinställningen som OpenGL® använder. Vissa beräkningar kan också utföras i förväg på VBO så att det kan göras så snabbt som möjligt. Utanför en VBO får en vanlig toppbuffert vanligtvis inte denna behandling och kan allokeras och användas som alla andra datatyper.