Hvordan gjengi en sirkel i OpenGL

Forfatter: Eugene Taylor
Opprettelsesdato: 12 August 2021
Oppdater Dato: 14 November 2024
Anonim
Hvordan gjengi en sirkel i OpenGL - Elektronikk
Hvordan gjengi en sirkel i OpenGL - Elektronikk

Innhold

OpenGL, eller Open Graphics Library, er et grafisk API (Application Programming Interface) for å skrive 2D- og 3D-applikasjoner på forskjellige programmeringsspråk og plattformer. Den kan brukes til å gjengi alt fra enkle, primitive gjenstander til komplekse 3D-scener. Open GL er mye brukt i datamaskindesign, vitenskapelig visualisering, flysimulering og videospill. Selv om OpenGl ikke har metoder for å tegne en sirkel direkte, er det mulig å bygge en ved hjelp av en serie linjer. Du må ha grunnleggende kunnskap om OpenGL for å tegne sirkelen.

Trinn 1

Lag et grunnleggende program med en OpenGL-visningsport. Hvis du ikke er kjent med denne prosessen, er det en veiledning på OpenGL-siden.


Steg 2

Legg til math.h.header-filen i programmet ditt ved å skrive inn følgende kode i begynnelsen av programmet: #include . Dette vil gi deg cos () og sin () (sinus og cosinus) funksjonene som trengs for å beregne sirkelen.

Trinn 3

Start sirkelmetoden ved å legge til følgende kode før du viser tilbakeringingsfunksjonen:

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

Variablene "x" og "y" vil bli brukt til å definere sentrum av sirkelen i vinduet ditt, mens "radius" etablerer sirkelen. Heltallet "num_lines" er antall linjer som brukes til å komponere sirkelen. Jo høyere dette tallet er, desto glattere vil sirkelen vises.

Trinn 4

Legg til følgende konfigurasjonskode inne i tastene:

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

Variabelen "vinkel" vil inneholde vinkelen på linjene som brukes til å konstruere sirkelen. Å ringe funksjonen glColor3f () setter fargen på linjene til svart, der serien på tre 0 tilsvarer intensiteten til rød, grønn og blå på en skala fra 0 til 1.


Trinn 5

Legg til følgende kode under funksjonen glColor3f () fra trinn 4:

glBegin (GL_LINE_LOOP) GO

Dette forteller OpenGL at eventuelle påfølgende linjer involverer tegning av linjer. Spesielt vil den tegne en "GL_LINE_LOOP", som er en serie med tilkoblede linjer.

Trinn 6

Skriv inn følgende kode for en for loop etter glBegin () -anropet:

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

Denne løkken gjør tre ting. Først itererer den i henhold til verdien av "num_lines", der num_lines er et heltall, som tegner en linje i hver iterasjon og resulterer i en sirkel sammensatt av rette linjer num_lines. For det andre beregner den linjens vinkel i forhold til sentrum av sirkelen i radianer. "M_P" er en konstant definert i matematikk.h som representerer pi. Til slutt beregner anropet til glVertex2f () koordinatene til linjens sluttpunkter.


Trinn 7

Etter loop-to, skriv inn følgende kodelinje:

glEnd () GO

Dette vil fortelle OpenGL at du er ferdig med å tegne linjene.

Trinn 8

For å tegne sirkelen i en scene, legg til et anrop fra drawCircle () -metoden til programmets tilbakeringingsskjermfunksjon, som må utarbeides i trinn 1. Spesifiser verdiene for x, y, radius og num_lines, der x og y representerer et punkt i scenen din er radius radiusen til sirkelen, og num_lines er antall linjer som utgjør sirkelen. Igjen, hvis du ikke er kjent med OpenGL og tilbakeringingsskjermen, se OpenGL-opplæringen.

Trinn 9

Kompilere og kjør programmet. Hvis du skrev inn funksjonene riktig, skulle den kompileres uten feil. Hvis du spesifiserte verdiene for x, y og radius, bør du se en svart sirkel vises på en hvit bakgrunn.

Hjemmelagde vinproduenter velger noen ganger å filtrere drikken i tedet for å la den tømme naturlig. Naturlig avklaring innebærer å la fate toffer om foråraker uklarhet l...

Hvordan lage porselenplater

Frank Hunt

November 2024

Handelruter mellom Kina og Italia blomtret da Marco Polo tok det førte teintøyet til Firenze. Die utmerkede leireobjektene ble kalt "porcellana" og ble en beettele for torhertugen ...

Nylige Artikler