Innhold
OpenGL, eller Open Graphics Library, er et grafisk API (Application Programming Interface) for å skrive 2D- og 3D-programmer på forskjellige språk og programmeringsplattformer. Den kan brukes til å gjengi alt fra enkle og primitive objekter til komplekse 3D-scener. Den åpne GL er mye brukt i datastyrt design, vitenskapelig visualisering, flysimulering og videospill. Selv om OpenGl ikke har metoder for å tegne en sirkel direkte, er det mulig å konstruere en ved hjelp av en serie linjer. Du må ha grunnleggende kunnskap om OpenGL for å tegne sirkelen.
retninger
Det er ingen direkte metode for å lage en sirkel i OpenGL, men det er fortsatt mulig å komponere en med de riktige kodelinjene (Creatas / Creatas / Getty Images)-
Lag et grunnleggende program med et OpenGL-visningsvindu. Hvis du ikke er kjent med denne prosessen, er det en veiledning på OpenGL-siden.
-
Legg til math.h.header-filen til programmet ditt ved å skrive inn følgende kode i begynnelsen av programmet: #include
. Dette vil gi deg cos () og sin () (sinus og cosinus) funksjoner som kreves for å beregne sirkelen. -
Start sirkelmetoden ved å legge til følgende kode før du viser tilbakeringingsfunksjonen:
void drawCircle (GLint x, GLint y, GLint ray, int num_lines) {}
Variablene "x" og "y" vil bli brukt til å definere sirkelens senter i vinduet, mens "strålen" etablerer radiusen til sirkelen. Heltallet "num_lines" er antall linjer som brukes til å komponere sirkelen. Jo større dette tallet, jo jevnere sirkelen vil se ut.
-
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. Kallet til glColor3f () -funksjonen setter fargen på linjene til svart, hvor serien på tre 0 tilsvarer intensiteten av rød, grønn og blå på en skala fra 0 til 1.
-
Legg til følgende kode under glColor3f () -funksjonen fra trinn 4:
glBegin (GL_LINE_LOOP) GO
Dette forteller OpenGL at noen etterfølgende linjer involverer tegningslinjer. Spesielt vil det tegne en "GL_LINE_LOOP", som er en serie med tilkoblede linjer.
-
Skriv inn følgende kode fra a til sløyfe etter glBegin () -samtalen:
for (int i = 0; i <num_lines; i ++) {vinkel = i * 2 * M_PI / num_lines; glVertex2f (x + (cos (vinkel) * radius), og + (uten (vinkel) * radius)); }
Dette slipset gjør tre ting. Først iter det etter verdien av "num_lines", hvor num_lines er et heltall, tegner en linje ved hver iterasjon og resulterer i en sirkel som består av num_lines av rette linjer. For det andre beregner vinkelen av linjene i forhold til sirkelens senter i radianer. "M_P" er en konstant definert i math.h som representerer pi. Til slutt beregner glVertex2f () -samtalen koordinatene til endepunktene til radene.
-
Etter loop-to, skriv inn følgende linje med kode:
glEnd () GO
Dette vil fortelle OpenGL at du er ferdig med å tegne linjene.
-
For å tegne sirkelen i en scene, legg til et anrop fra drawCircle () -metoden til programmets tilbakeringingsfunksjon, som må utarbeides i trinn 1. Angi verdiene for x, y, radius og a_line, hvor x og y representerer et punkt I sin scene er radius radius av sirkelen, og num_lines er antall linjer som utgjør sirkelen. Igjen, hvis du ikke er kjent med OpenGL og tilbakeringingsdisplayet, se OpenGL-veiledningen.
-
Kompilere og kjøre programmet. Hvis du har lagt inn funksjonene riktig, bør den kompilere uten feil. Hvis du har angitt x-, y- og radiusverdiene, bør du se en svart sirkel som vises på en hvit bakgrunn.
Hva du trenger
- Datamaskin med OpenGL-støtte
- Tekstredigerer og C-språkkompilatorverktøy eller C-utviklingsmiljø