Sådan gengives en cirkel i OpenGL

Forfatter: Eugene Taylor
Oprettelsesdato: 10 August 2021
Opdateringsdato: 1 Juli 2024
Anonim
Sådan gengives en cirkel i OpenGL - Elektronik
Sådan gengives en cirkel i OpenGL - Elektronik

Indhold

OpenGL, eller Open Graphics Library, er et grafisk API (Application Programming Interface) til at skrive 2D- og 3D-applikationer på forskellige programmeringssprog og platforme. Det kan bruges til at gengive alt fra enkle, primitive objekter til komplekse 3D-scener. Open GL bruges i vid udstrækning inden for computerdesign, videnskabelig visualisering, flysimulering og videospil. Selvom OpenGl ikke har metoder til at tegne en cirkel direkte, er det muligt at bygge en ved hjælp af en række linjer. Du bliver nødt til at have en grundlæggende viden om OpenGL for at tegne cirklen.

Trin 1

Lav et grundlæggende program med en OpenGL-visningsport. Hvis du ikke er fortrolig med denne proces, er der en tutorial på OpenGL-siden.


Trin 2

Føj math.h.header-filen til dit program ved at indtaste følgende kode i begyndelsen af ​​programmet: #include . Dette giver dig funktionerne cos () og sin () (sinus og cosinus), der er nødvendige for at beregne cirklen.

Trin 3

Start cirkelmetoden ved at tilføje følgende kode, inden du viser tilbagekaldsfunktionen:

void drawCircle (GLint x, GLint y, GLint radius, int num_lines) {}

Variablerne "x" og "y" vil blive brugt til at definere centrum af cirklen i dit vindue, mens "radius" opretter cirkelens radius. Heltallet "num_lines" er antallet af linjer, der bruges til at komponere cirklen. Jo højere dette tal, jo glattere vises cirklen.

Trin 4

Tilføj følgende konfigurationskode inde i tasterne:

flydevinkel GO int num_lines GO glColor3f (0.0, 0.0, 0.0) GO.

Variablen "vinkel" vil indeholde vinklen på de linjer, der bruges til at konstruere cirklen. Ved at kalde funktionen glColor3f () indstilles linjernes farve til sort, hvor serien på tre 0 svarer til intensiteten af ​​rød, grøn og blå på en skala fra 0 til 1.


Trin 5

Tilføj følgende kode under glColor3f () -funktionen fra trin 4:

glBegin (GL_LINE_LOOP) GO

Dette fortæller OpenGL, at eventuelle efterfølgende linjer involverer tegning af linjer. Specifikt tegner den en "GL_LINE_LOOP", som er en række tilsluttede linjer.

Trin 6

Indtast følgende kode for en for loop efter glBegin () opkaldet:

for (int i = 0; i <række_nummer; i ++) {vinkel = i * 2 * M_PI / num_line; glVertex2f (x + (cos (vinkel) * radius), y + (sin (vinkel) * radius)); }

Denne løkke gør tre ting. For det første gentages det i henhold til værdien af ​​"num_lines", hvor num_lines er et heltal, der tegner en linje i hver iteration og resulterer i en cirkel sammensat af lige linjer num_lines. For det andet beregner den vinklen på linjerne i forhold til centrum af cirklen i radianer. "M_P" er en konstant defineret i matematik.h, der repræsenterer pi. Endelig beregner kaldet til glVertex2f () koordinaterne for linjens slutpunkter.


Trin 7

Efter loop-to skal du indtaste følgende linje kode:

glEnd () GO

Dette vil fortælle OpenGL, at du er færdig med at tegne linjerne.

Trin 8

For at tegne cirklen i en scene skal du tilføje et opkald fra drawCircle () -metoden til programmets tilbagekaldningsvisningsfunktion, som skal forberedes i trin 1. Angiv værdierne x, y, radius og num_lines, hvor x og y repræsenterer et punkt i din scene er radius cirkelens radius, og num_lines er antallet af linjer, der udgør cirklen. Igen, hvis du ikke er bekendt med OpenGL og tilbagekaldsdisplayet, se OpenGL-vejledningen.

Trin 9

Kompilér og kør dit program. Hvis du indtastede funktionerne korrekt, skulle det kompileres uden fejl. Hvis du har angivet værdierne for x, y og radius, skal du se en sort cirkel vises på en hvid baggrund.

Sådan slår du en boot

Lewis Jackson

Juli 2024

At vide, hvordan du korrekt knytter nørebåndene på dine knater kan have tor indflydele på komforten, ikkerheden og ydeevnen i dit pil. Ifølge Houghton port Medicine Foundation...

Sådan rengøres en køkkenhætte

Lewis Jackson

Juli 2024

Madlavning på en komfur producerer damp og fedt, begge kan forblive i udtødningventilatoren ovenfor. Udtødningventilatorer kan være anbragt i tort (normalt rutfrit tål) eller ...

Interessant På Webstedet