[c++] GLFW의 라이팅 및 셰이딩 기법

OpenGL은 가벼운 창 관리, 입력 이벤트 처리, 그래픽 렌더링 등을 위한 라이브러리인 GLFW를 지원합니다. 이 라이브러리를 사용하면 OpenGL을 이용한 다양한 그래픽 작업을 보다 쉽게 처리할 수 있습니다. 이번에는 GLFW를 이용하여 간단한 라이팅 및 셰이딩 기법을 구현하는 방법에 대해 알아보겠습니다.

1. GLFW 및 OpenGL 설정

먼저, GLFW 및 OpenGL을 설치하고 프로젝트에 링크합니다. 그 후, GLFW 윈도우를 생성하여 OpenGL 컨텍스트를 초기화하고 렌더링 루프를 설정합니다.

#include <GLFW/glfw3.h>

int main() {
    // GLFW 초기화
    if (!glfwInit()) {
        // 초기화 실패 처리
        return -1;
    }

    // 윈도우 생성
    GLFWwindow* window = glfwCreateWindow(800, 600, "Lighting and Shading", NULL, NULL);
    if (!window) {
        // 윈도우 생성 실패 처리
        glfwTerminate();
        return -1;
    }

    // 컨텍스트 및 콜백 설정
    glfwMakeContextCurrent(window);
    // ...

    // 렌더링 루프
    while (!glfwWindowShouldClose(window)) {
        // 렌더링
        // ...

        // 입력 이벤트 처리
        glfwPollEvents();
    }

    // GLFW 정리
    glfwTerminate();

    return 0;
}

2. 라이팅과 셰이딩 구현

라이팅과 셰이딩을 구현하기 위해서는 적절한 광원과 재질을 설정해야 합니다. GLFW를 통해 입력 이벤트를 수신한 후, 해당 이벤트에 따라 광원과 재질을 조절하고 셰이더 프로그램을 작성하여 렌더링합니다.

// GLSL 셰이더 코드
const char* vertexShaderSource = "#version 330 core\nlayout (location = 0) in vec3 aPos;void main() { gl_Position = vec4(aPos.x, aPos.y, aPos.z, 1.0); }";
const char* fragmentShaderSource = "#version 330 core\nout vec4 FragColor;void main() { FragColor = vec4(1.0f, 0.5f, 0.2f, 1.0f); }";

3. 결과 확인

컴파일 및 실행하여 라이팅과 셰이딩이 적용된 그래픽을 확인합니다.

이상으로 GLFW를 이용한 라이팅과 셰이딩 기법에 대해 알아보았습니다.

참고 자료: