ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Ubuntu 16.04에서 OpenGL( freeGLUT ) 프로그래밍
    OpenGL/개발환경 2016. 11. 10. 00:27










    설치


    $ sudo apt-get install freeglut3-dev




    예제 코드 컴파일


    $ gcc test.c -lglut -lGL -lGLU




    실행결과





    visual studio code에서 컴파일 및 실행하기


    visual studio code 설치는 다음 글을 참고하세요..

    [리눅스/개발환경] - Ubuntu Linux에 Visual Studio Code 설치해서 C/C++컴파일 해보기


    설치 완료 후, tasks.json파일에서 아래 빨간색으로 된 부분만 수정하시면 됩니다.


    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    {
       "version": "0.1.0",
       "command": "bash",
       "isShellCommand": true,
       "args": ["-c"],
       "tasks": [
           {
               "taskName": "saveNcompile",
               "suppressTaskName": true,
               "isBuildCommand": true,
               "args": ["gcc main.c -lglut -lGL -lGLU -o main"]
           }, {
               "taskName": "execute",
               "suppressTaskName": true,
               "isTestCommand": true,
               "args": ["gnome-terminal -e \"bash -ic  ./main;bash \""]
           }
       ]
    }
    cs





    예제코드


    출처 - http://www.lighthouse3d.com/tutorials/glut-tutorial/animation/


    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    #include "GL/freeglut.h"
     
     
    void changeSize(int w, int h) {
     
        // Prevent a divide by zero, when window is too short
        // (you cant make a window of zero width).
        if (h == 0)
            h = 1;
     
        float ratio = w * 1.0 / h;
     
        // Use the Projection Matrix
        glMatrixMode(GL_PROJECTION);
     
        // Reset Matrix
        glLoadIdentity();
     
        // Set the viewport to be the entire window
        glViewport(00, w, h);
     
        // Set the correct perspective.
        gluPerspective(45.0f, ratio, 0.1f, 100.0f);
     
        // Get Back to the Modelview
        glMatrixMode(GL_MODELVIEW);
    }
     
    float angle = 0.0f;
     
    void renderScene(void) {
     
        // Clear Color and Depth Buffers
        glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
     
        // Reset transformations
        glLoadIdentity();
        // Set the camera
        gluLookAt(0.0f, 0.0f, 10.0f,
            0.0f, 0.0f, 0.0f,
            0.0f, 1.0f, 0.0f);
     
        glRotatef(angle, 0.0f, 1.0f, 0.0f);
     
        glBegin(GL_TRIANGLES);
        glVertex3f(-2.0f, -2.0f, 0.0f);
        glVertex3f(2.0f, 0.0f, 0.0);
        glVertex3f(0.0f, 2.0f, 0.0);
        glEnd();
     
        angle += 0.1f;
     
        glutSwapBuffers();
    }
     
    int main(int argc, char **argv) {
     
        // init GLUT and create window
        glutInit(&argc, argv);
        glutInitDisplayMode(GLUT_DEPTH | GLUT_DOUBLE | GLUT_RGBA);
        glutInitWindowPosition(100100);
        glutInitWindowSize(320320);
        glutCreateWindow("Lighthouse3D- GLUT Tutorial");
     
        // register callbacks
        glutDisplayFunc(renderScene);
        glutReshapeFunc(changeSize);
        glutIdleFunc(renderScene);
     
        // enter GLUT event processing cycle
        glutMainLoop();
     
        return 1;
    }
     
    cs


    포스트 작성시에는 문제 없었지만 이후 문제가 생길 수 있습니다.
    댓글로 알려주시면 빠른 시일내에 답변을 드리겠습니다.

    여러분의 응원으로 좋은 컨텐츠가 만들어집니다. 지금 본 내용이 도움이 되었다면 유튜브 구독 부탁드립니다. 감사합니다 : )

    유튜브 구독하기


    댓글 2

    • anzhvh 2020.01.13 16:09


      우분투 환경에서 사용하고 있습니다 pbo를 사용하기 위해 glGenBuffers 함수를 사용하는데요 윈도우에선 아무 문제 없던것이 우분투에서는 동작하지 않네요 'glGenBuffers' was not declared in this scope라는 오류메시지가 발생합니다 glext.h도 올바르게 include되었고 GL_GLEXT_PROTOTYPES 도 삽입했슴에도 안되네요 도움 요청드립니다 ㅠㅠ

Designed by Tistory.