๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿคซ ETC/์ปดํ“จํ„ฐ๊ทธ๋ž˜ํ”ฝ์Šค

[CG/Mac์—์„œ openGL ์‚ฌ์šฉํ•˜๊ธฐ]

by kekeyo 2024. 3. 31.
728x90

์ด๋ฒˆ ํ•™๊ธฐ์— ์ปดํ“จํ„ฐ๊ทธ๋ž˜ํ”ฝ์Šค๋ผ๋Š” ๊ณผ๋ชฉ์„ ์ˆ˜๊ฐ•ํ•˜๋Š”๋ฐ

๊ต์ˆ˜๋‹˜์ด window ๊ธฐ์ค€์œผ๋กœ๋งŒ ์„ค๋ช…์„ ํ•ด์ฃผ์…”์„œ

Mac์—์„œ๋Š” ์–ด๋–ป๊ฒŒ openGL์„ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋‚˜์— ๋Œ€ํ•ด ๊ธ€์„ ์ ์–ด๋ณด๊ฒ ๋‹ค.

 

[Mac M1 Air ๊ธฐ์ค€]

 

1. Xcode ์„ค์น˜ ๋ฐ ์—ด๊ธฐ

'Create New Project' ์„ ํƒ

 

2. Commnad Line Tool ์„ ํƒ -> Next

 

3. ํŒŒ์ผ ์ƒ์„ฑ

Product Name์— ํŒŒ์ผ ๋ช… ์ž…๋ ฅ

Language๋Š” c++๋กœ ์„ค์ • ํ›„ Next

ํด๋”๋Š” ์›ํ•˜๋Š” ๊ณณ์œผ๋กœ ์„ค์ •ํ•œ ํ›„ Create

 

 

4. Framework ์ถ”๊ฐ€

Frameworks and Libraries ๋‚ด์˜ + ๋ฒ„ํŠผ์„ ์„ ํƒํ•˜์—ฌ

 

 

OpenGL.framework๋ž‘ GLUT.framework๋ฅผ ์ถ”๊ฐ€ํ•ด์ฃผ๋ฉด ๋œ๋‹ค!

์ด๋ ‡๊ฒŒ ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ ์ถ”๊ฐ€๋˜๋ฉด openGL ์‚ฌ์šฉ ์ค€๋น„๋Š” ๋

 

 

5. ์ž‘๋™ ํ…Œ์ŠคํŠธ ํ•ด๋ณด๊ธฐ

#include <iostream>
#include <OpenGL/OpenGL.h>
#include <GLUT/GLUT.h>

void drawSquare(){
    glClear(GL_COLOR_BUFFER_BIT);
    glBegin(GL_POLYGON);
    glVertex3f(-0.5, -0.5, 0.0);
    glVertex3f(0.5, -0.5, 0.0);
    glVertex3f(0.5, 0.5, 0.0);
    glVertex3f(-0.5, 0.5, 0.0);
    glEnd();
    glFlush();
}

int main(int argc, char* argv[]) {
    glutInit(&argc, argv);
    glutCreateWindow("Test");
    glutDisplayFunc(drawSquare);
    glutMainLoop();
    return 0;
}

๊ฐ„๋‹จํ•˜๊ฒŒ ์‚ฌ๊ฐํ˜•์„ ๋งŒ๋“ค์–ด๋ณด๋Š” ์˜ˆ์ œ์ด๋‹ค.

 

์ด ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•ด์„œ 

๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜์˜ค๋ฉด ๋œ ๊ฒƒ์ด๋‹ค.

 

 


(์ถ”๊ฐ€์ ์œผ๋กœ)

์ด๋Ÿฐ warning์ด ๋œจ๋Š” ๊ฒฝ์šฐ์—๋Š”, 

#define GL_SILENCE_DEPRECATION

๋ฅผ ํ—ค๋” ์ด์ „์— ์‚ฝ์ž…ํ•ด์ฃผ๋ฉด ๋œ๋‹ค. 

 

#define GL_SILENCE_DEPRECATION		// warning๋“ค ์—†์• ๊ธฐ ์œ„ํ•ด
#include <iostream>
#include <OpenGL/OpenGL.h>
#include <GLUT/GLUT.h>

void myDisplay(){
    glClear(GL_COLOR_BUFFER_BIT);
    glBegin(GL_POLYGON);
    glVertex3f(-0.5, -0.5, 0.0);
    glVertex3f(0.5, -0.5, 0.0);
    glVertex3f(0.5, 0.5, 0.0);
    glVertex3f(-0.5, 0.5, 0.0);
    glEnd();
    glFlush();
}

int main(int argc, char* argv[]) {
    glutInit(&argc, argv);
    glutCreateWindow("Test");
    glutDisplayFunc(myDisplay);
    glutMainLoop();
    return 0;
}

 

728x90