Hello, OpenGL - OpenGL × GLFW3 × C++의 기억.

6237 단어 C++GLFWOpenGL
GLFW3를 사용하여 OpenGL 공부를 시작했기 때문에 비망록적인 것입니다.
덧붙여서 C++도 공부중입니다.
이 기사에 대한 츳코미는 환영합니다.

GLFW3의 함수에 대해 영어로 코멘트하고 있습니다만, 그들은 glfw3.h 파일 참조 이쪽으로부터의 인용이 되고 있습니다. 일본어의 코멘트는 제가 마음대로 해석하고 붙이고 있으므로, 잘못되어 있으면 츳코미 부탁합니다.

컴파일러 버전
$ g++ --version
g++ (Debian 4.7.2-5) 4.7.2
...

Hello, OpenGL



GLFW3 라이브러리를 사용하여 창을 만들고 표시합니다.
GLU 라이브러리를 캡처하고 있지만 창을 만드는 데 필요하지 않습니다.
자주 포함 방법을 잊기 때문에, 암기를 목적으로 쓰고 있습니다.

GLU를 포함한 GLFW3의 포함.
복수의 소스에서는, 이 매크로를 Main 에 상당하는 파일의 선두로 정의.
다른 소스에서는 매크로를 작성할 필요는 없습니다.

memo
#define GLFW_INCLUDE_GLU
#include <GLFW/glfw3.h>


01-hello.cpp

#define GLFW_INCLUDE_GLU
#include <GLFW/glfw3.h>
#include <iostream>
#include <cstdlib>
#include <string>

static GLFWwindow*  aWindow;
static int          aWidth = 640;
static int          aHeight = 480;
static std::string  aTitle = "Hello, OpenGL";

int main()
{
    // Initializes the GLFW library.
    if(! glfwInit() )
    {
        std::cerr << "glfwInit failed." << std::endl;
        exit( EXIT_FAILURE );
    }
    // Creates a window and its associated context.
    aWindow = glfwCreateWindow( aWidth, aHeight, aTitle.c_str(), nullptr, nullptr );
    if(! aWindow )
    {
        std::cerr << "glfwCreateWindow failed." << std::endl;
        glfwTerminate();
        exit( EXIT_FAILURE );
    }
    // Makes the context of the specified window current for the calling thread.
    glfwMakeContextCurrent( aWindow );
    // Returns a string describing the compile-time configuration.
    std::cout << glfwGetVersionString() << std::endl;
    // glClear() で使用する色(RGBA)
    glClearColor( 1, 1, 1, 1 );

    // Checks the close flag of the specified window.
    while(! glfwWindowShouldClose( aWindow ))
    {
        // 画面をクリア。
        glClear( GL_COLOR_BUFFER_BIT );

        // Swaps the front and back buffers of the specified window.
        glfwSwapBuffers( aWindow );
        // Processes all pending events.
        // マウスやキー入力のイベントはこの関数で監視する。
        glfwPollEvents();
    }
    // Terminates the GLFW library.
    glfwTerminate();

    return EXIT_SUCCESS;
}


빌드 및 실행 결과
$ g++ -std=c++11 -Wall 01-hello.cpp -lglfw -lGLU
$ ./a.out 
3.1.0 X11 GLX glXGetProcAddress clock_gettime /dev/js shared

좋은 웹페이지 즐겨찾기