CS/HCI 윈도우즈프로그래밍

CS/HCI 윈도우즈프로그래밍

[OpenGL] 9. Shader (5) - 직사각형에 실시간으로 변하는 색상 입히기 (GLFW, GLAD)

직사각형에 색상 입히기 예제 지난 글에 작성했던 내용을 한번 코드로 실습해보고자 한다. 우선 아래와 같이 색상을 입힌 직사각형 코드를 준비했다. #include #include #include "Shader_s.h" #include float vertex_data[] = { -0.5, -0.5, 1.0, 0.2, 0.2, 0.2, // 왼쪽 아래 0.5, -0.5, 1.0, 0.3, 0.3, 0.3, // 오른쪽 아래 -0.5, 0.5, 1.0, 0.4, 0.4, 0.4, // 왼쪽 위 0.5, 0.5, 1.0, 0.5, 0.5, 0.5, // 오른쪽 위 }; unsigned int index_data[] = { 0, 1, 2, 1, 2, 3 }; int main() { glfwInit(); glfwWi..

CS/HCI 윈도우즈프로그래밍

[OpenGL] 8. Shader (4) - GLSL

GLSL GLSL은 GL Shader Language 의 약자로, 셰이더 프로그래밍을 위한 C 기반의 언어이다. 대표적인 사용 방법은 아래와 같다. #version version_number // Open GL 버전 in type in_variable_name; in type in_variable_name2; // 셰이더에 들어오는 입력 변수 out type out_variable_name; // 셰이더가 처리한 뒤 내보내는 출력 변수 uniform type uniform_name; // 모든 정점에 대해 동일하게 사용되는 전역 변수 void main() { out_variable_name = weird_stuff_we_processed; } GLSL 데이터 타입 GLSL은 대부분의 C 데이터 타입을 지..

CS/HCI 윈도우즈프로그래밍

[OpenGL] 7. Shader (3) - EBO (Element Buffer Object)

지난 글에서는 VBO 와 VAO 를 사용하여 삼각형을 그리는 방법에 대해 정리하였다. 이번 글에서는 EBO를 사용하여 정점 데이터를 중복으로 사용하지 않도록 하는 과정을 정리한다. 먼저 지난 예제를 토대로 사각형을 그리는 예제를 아래와 같이 작성하였다. #include #include unsigned int createAndCompileShader(GLenum shaderEnum, const char* shaderSourceCode); unsigned int createShaderProgramWithShaders(unsigned int vertexShader, unsigned int fragmentShader); const char* VertexShaderSourceCode = "#version 330 ..

CS/HCI 윈도우즈프로그래밍

[OpenGL] 6. Shader (2) - VAO

지난 글에서는 셰이더의 개념과 만드는 방법 그리고 셰이더 넘길 데이터가 담기는 버퍼를 만들어서 데이터와 연결하는 과정까지 정리하였다. 이번 글에서는 버퍼에 있는 데이터를 어떻게 셰이더로 넘길지 정의하는 VAO에 대해서 정리해보고자 한다. Vertex Attribute Pointer 지난 시간에 만든 VBO ( Vertex Buffer Object ) 에는 셰이더 넘길 전체 데이터가 들어가 있었다. float vertices[] = { -0.5f, -0.5f, 0.0f, // vertex 1 0.5f, -0.5f, 0.0f, // vertex 2 0.0f, -0.5f, 0.0f, // vertex 3 -0.5f, 0.5f, 0.0f // vertex 4 }; 가령 이 코드를 보면, 삼각형을 만드는데 사용할..

CS/HCI 윈도우즈프로그래밍

[OpenGL] 5. Shader (1) - Shader, VBO, Shader Program

이번 글에서는 셰이더에 대해 더 자세한 사용법을 정리하고자 한다. 지난 글에서 셰이더는 그래픽스 스테이지에서 실행되는 작은 프로그램을 의미한다고 하였다. 대표적으로 이 수업에서 다룰 셰이더는 Vertext Shader, Fragment Shader 2가지 이다. Vertex Shader 사용 예 모든 셰이더 프로그램은 GLSL 이라는 별도의 언어를 사용한다고 하였다. Vertex Shader 는 일반적으로 아래 형태로 사용하는데, 각 코드를 뜯어서 설명해보려고 한다. const char* vertexShaderSource = "#version 330 core\n" "layout (location = 0) in vec3 aPos;\n" "void main()\n" "{\n" " gl_Position = v..

CS/HCI 윈도우즈프로그래밍

[OpenGL] 4. Graphics Pipeline

오늘은 GL 에서 중요한 기본 개념인 Graphics pipeline에 대해 정리하고자 한다. 지난 글에서 프레임 버퍼를 설명할 때, 그래픽 프로그램이 적절히 처리한 데이터를 프레임 버퍼에 저장하면, 프레임 버퍼에 저장된 데이터를 비디오 컨트롤러가 가져다가 화면에 출력할 수 있는 데이터로 변환해준다고 했다. 이제 구체적으로 그래픽 프로그램이 어떻게 '적절히 처리' 하는지 과정을 살펴보자. 먼저 프레임 버퍼에 데이터를 저장하기까지 처리하는 큰 흐름은 위와 같다. 이 흐름을 따라가려면 먼저 Vertex 에 대한 이야기를 해야한다. 이를 위해 OpenGL 의 기본 용어 4가지를 정리해보자. Open GL 기본 용어 Primitive : 원시적인 이라는 뜻 그대로, 렌더링의 기반이 되는 기본 단위(점, 선, 삼..

CS/HCI 윈도우즈프로그래밍

[OpenGL] 3. GLFW 기본 예제 뜯어보기

한번 간단한 GLFW 기본 예제를 뜯어보자. 우선 전체 소스코드는 아래와 같다. // OpenGL1 glfw.cpp : 이 파일에는 'main' 함수가 포함됩니다. 거기서 프로그램 실행이 시작되고 종료됩니다. // #include #include #include void framebuffer_size_callback(GLFWwindow* window, int width, int height); void processInput(GLFWwindow* window); const unsigned int SCR_WIDTH = 800; const unsigned int SCR_HEIGHT = 600; int main() { glfwInit(); glfwWindowHint(GLFW_CONTEXT_VERSION_MAJ..

CS/HCI 윈도우즈프로그래밍

[OpenGL] 2. Open GL 개념

Graphics API Open GL 프로그래밍에 앞서 Graphics API 에 대해 정리하고자 한다. 그래픽 API는 말 그대로 그래픽 작업을 하는데 필요한 주요 기능을 추상화하여 API로 제공해주는 도구를 말한다. 그래픽 어플리케이션을 만든다면 사용자가 이 어플리케이션과 상호작용할 때 결국 키보드도 쓰고 마우스도 쓰고, 컴퓨터는 화면을 그리기 위해 그래픽카드도 사용하고 할텐데, 그런 하드웨어와 프로그램 사이에 정보를 주고받을 수 있는 중간 통로 역할을 하게 된다. 보통 3차원을 그리기 위해서 Graphics API를 사용할텐데, 이때 크게 High Level API 와 Low Level API로 나뉘어진다. High Level API 프로그래머 친화적인 방식이다. 어떤 그림을 그리기 위한 자세한 과..

CS/HCI 윈도우즈프로그래밍

[OpenGL] 1. GLFW, GLAD 환경설정

2시간의 삽질 끝에 성공한 GLFW, GLAD 환경설정 과정을 정리한다. 개발환경 세팅이 언제나 제일 어렵다.. GLFW 설치 GLFW (Graphics Library Framework) 는 OpenGL에서 데스크톱 개발을 하기 위한 도구를 제공한다. 그래픽스 개념을 적용하여 어플리케이션을 만드는 도구이다. 학교 강의록에서는 교수님이 CMake를 설치하고 직접 GLFW 파일을 빌드하여 사용하는 것을 알려주셨다. https://www.glfw.org/download.html Download GLFW source code and binary distribution download links. www.glfw.org 그대로 따라하면서 계속 뭔가 막혀서 답답했는데 이 사이트에 가면 이미 빌드된 파일을 함께 제공..

에버듀
'CS/HCI 윈도우즈프로그래밍' 카테고리의 글 목록 (2 Page)