OpenGl 3편 - 3d 정육면체 그리는 코드
2020. 9. 13. 15:24
반응형
#include <gl/glut.h>
#include <gl/glu.h>
GLfloat MyVertices[8][3] = { {-0.25,-0.25,0.25}, {-0.25,0.25,0.25}, {0.25,0.25,0.25},{0.25,-0.25,0.25}, {-0.25,-0.25,-0.25}, {-0.25,0.25,-0.25},{0.25,0.25,-0.25}, {0.25,-0.25,-0.25} };
GLfloat MyColors[8][3] = { {0.2,0.2,0.2}, {1.0,0.0,0.0}, {1.0, 1.0, 0.0}, {0.0,1.0,0.0},{0.0,0.0,1.0}, {1.0,0.0,1.0}, {1.0,1.0,1.0}, {0.0,1.0,1.0} };
GLubyte MyVertexList[24] = { 0,3,2,1, 3,7,6,2, 0,4,7,3, 1,2,6,5, 4,5,6,7, 0,1,5,4 };
void MyDisplay() {
glClear(GL_COLOR_BUFFER_BIT);
glFrontFace(GL_CCW); //vertex배열을 반시계방향으로 연결하겠다 : 표면
// CCW는 counter clockwise로 반시계라는 것이다
glEnable(GL_CULL_FACE);//카메라로부터 보이지 않는 면을 숨기겠다
glEnable(GL_COLOR_ARRAY);//VertexArray기능 활성화 : 정점 색
glEnable(GL_VERTEX_ARRAY); // VertexArray기능 활성화 : 정점 좌표
glColorPointer(3, GL_FLOAT, 0, MyColors);//Vertex의 색상을 지정한 변수명 MyColors제시
glVertexPointer(3, GL_FLOAT, 0, MyVertices);//Vertex의 좌표를 지정한 변수명 MyVertices제시
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glRotatef(30.0, 1.0, 1.0, 1.0);//벡터 (1,1,1)을 회전축으로 하여 반시계방향으로 30도 회전
for (GLint i = 0; i < 6; i++) {
glDrawElements(GL_POLYGON, 4, GL_UNSIGNED_BYTE, &MyVertexList[4 * i]);//정육면체 화면에 그리기
}
glFlush();
}
int main(int argc, char** argv) {
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGB);
glutInitWindowSize(500, 500);
glutCreateWindow("3dCUBE");
glutDisplayFunc(MyDisplay);
glutMainLoop();
return 0;
return 0;
}
자세한 설명은 주석에 있습니다.
결과물은 다음과 같습니다.
반응형
'프로그래밍 > OpenGl' 카테고리의 다른 글
OpenGl 4편 - 3d 모형 반사광 재질 viewport Example (0) | 2020.09.26 |
---|---|
OpenGl 2편 - 키보드 반응 callback 주기 (0) | 2020.09.13 |
OpenGl 1편 - 화면 위에 여러 점 만들기 (0) | 2020.09.13 |