Denna vecka har vi fått lära oss att rita ut 3D objekt! Vi har fått lära oss saker som ”Vertex, shader, buffer”.
Vertex – Vertriser, är punkter i ett objekt som har koordinater. Med vertriserna ritar vi ut trianglar och med flera trianglar får vi ut olika 3D objekt.
Shader – När det gäller datorgrafik, är en Shader ett datorprogram som används för att göra shading: produktion av lämpliga nivåer av färg i en bild, eller, i modern tid, också att skapa specialeffekter eller göra video efterbearbetning. En definition i lekmannatermer kan ges som ”ett program som berättar en dator hur man drar något på ett specifikt och unikt sätt”. #Wikipedia
Buffer – Bara några minnesblock. Människor tenderar att använda ordet ”buffert” när man talar om att flytta data runt, eftersom uppgifterna kommer att placeras i bufferten, placerades därefter i sin slutdestination. Det är inte alltid fallet men, men det är en av dessa ”känns rätt” programmerare saker
En vertex-buffer är: En Vertex Buffer Object (VBO) är en OpenGL funktion som ger metoder för uppladdning vertex data (position, normal vektor, färg, etc.) till videoenheten för icke-omedelbar-mode rendering. VBOs erbjuder avsevärda prestandavinster över omedelbar läge som gör främst på grund av att uppgifter finns i video enhetens minne snarare än systemminnet och det kan göras direkt av videoenheten. #Wikipedia
För att rita ut något i 3D behövs tre basic grejer vilket är: Vertex-buffer, Vertex/pixel-shader, input_layout.
Med vertriserna ritar vi vi ut massa trianglar för en triangel är den minsta möjliga polynomen som har en yta. En vertris är en punkt, två är ett sträck, tre är en triangel.
När vi ritar ut en fyrkant har vi flera olika trianglar med koordinater som utgår ifrån varandra. Två trianglar som har ligger emot varandra skapar en rektangel. Så med 36 trianglar kan man skapa en kub.
Vi ritar ut vertriserna med koordinater som x y z då x är höger och vänster, y är upp och ned, z är in och ut. Det kan se ut något som:
{ -1.0f, 1.0f, 0.0f, 0xff0000ff }, //x y z //0x = hexadecimal sen är det spegelvänt till RGBA så det blir BGRA som är BLÅ GRÖN RÖD ALPHA// Just denna triangel är röd
{ 1.0f, 1.0f, 0.0f, 0xffff0000 }, //blå
{ 1.0f, -1.0f, 0.0f, 0xff00ff00 }, //grön
{ 1.0f, -1.0f, 0.0f, 0xff00ff00 }, //grön
{ -1.0f, -1.0f, 0.0f, 0xffff00ff }, //gul
{ -1.0f, 1.0f, 0.0f, 0xff0000ff }, //röd
//——————————————-
{ 1.0f, 1.0f, 2.0f, 0xffff00ff }, //rosa
{ 1.0f, -1.0f, 0.0f, 0xff00ff00 }, //grön
{ 1.0f, 1.0f, 0.0f, 0xffff0000 }, // blå
{ 1.0f, -1.0f, 0.0f, 0xff00ff00 }, //grön
{ 1.0f, 1.0f, 2.0f, 0xffff00ff }, //rosa
{ 1.0f, -1.0f, 2.0f, 0xffffffff }, //grön
//——————————————–
{ 1.0f, -1.0f, 2.0f, 0xffffffff }, //vit etc….
{ 1.0f, 1.0f, 2.0f, 0xffff00ff },
{ -1.0f, 1.0f, 2.0f, 0x00000000 }, //svart
{ -1.0f, 1.0f, 2.0f, 0x00000000 },
{ -1.0f, -1.0f, 2.0f, 0xff00ffff },
{ 1.0f, -1.0f, 2.0f, 0xffffffff },
//———————————————
{ -1.0f, 1.0f, 0.0f, 0xff0000ff },
{ -1.0f, -1.0f, 0.0f, 0xffff00ff },
{ -1.0f, 1.0f, 2.0f, 0x00000000 },
{ -1.0f, -1.0f, 2.0f, 0xff00ffff },
{ -1.0f, 1.0f, 2.0f, 0x00000000 },
{ -1.0f, -1.0f, 0.0f, 0xffff00ff },
//———————————————
{ -1.0f, 1.0f, 0.0f, 0xff0000ff },
{ -1.0f, 1.0f, 2.0f, 0x00000000 },
{ 1.0f, 1.0f, 2.0f, 0xffff00ff },
{ 1.0f, 1.0f, 2.0f, 0xffff00ff },
{ 1.0f, 1.0f, 0.0f, 0xffff0000 },
{ -1.0f, 1.0f, 0.0f, 0xff0000ff },
//———————————————
{ 1.0f, -1.0f, 2.0f, 0xffffffff },
{ -1.0f, -1.0f, 2.0f, 0xff00ffff },
{ -1.0f, -1.0f, 0.0f, 0xffff00ff },
{ -1.0f, -1.0f, 0.0f, 0xffff00ff },
{ 1.0f, -1.0f, 0.0f, 0xff00ff00 },
{ 1.0f, -1.0f, 2.0f, 0xffffffff },