[C :: OpenGL] 삼각형 그리기

simpled 2013.08.05 21:07 조회 수 : 3769

005.png

/*

수준이 갑자기 떨어져서 의아해 하는 분들이 있을것이다.

여지껏은, 소스들을 고친것이고, 이번에는 외워서 한것이다.

그 예로, 좌표축 회전 기능이 없다. 또한 회전기능이 없는지라, 버퍼 교체 필요 없으므로 glutSwapbuffer(); 대신, glFlush()기능을 사용하였다.

물론 glOrtho의 z축까지 제대로 설정해주는 과욕이 있긴 하지만, 이쁘게 봐주길 바란다.

*/

 

#include <opengl.h>

void RenderScene(){
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glBegin(GL_TRIANGLES);
    glColor3f(1,1,0);
        glVertex3f(0,0,0);
        glVertex3f(10,10,0);
        glVertex3f(20,10,0);
    glEnd();
    glFlush();
    }

void SetupRC(){
    glClearColor(0,0,0,1);
    }

void ChangeSize(int x,int y){
    float man=100.0;
    float girl=-100.0;
    float ratio=x/y;

    glViewport(0,0,x,y);

    if(x==0) x=1;
    if(y==0) y=1;

    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();

    if (ratio<=1) glOrtho(girl, man, girl/ratio, man/ratio, girl, man);
    else glOrtho(girl*ratio, man*ratio, girl, man, girl, man);

    glMatrixMode(GL_MODELVIEW);
    glLoadIdentity();
    }

void main(){
    glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
    glutCreateWindow("오후핫");
    glutDisplayFunc(RenderScene);
    glutReshapeFunc(ChangeSize);
    SetupRC();
    glutMainLoop();
    }