본문 바로가기

Study/그래픽스

0. Open_Window

빈 윈도우 창을 띄우는 Code

 

#include <stdio.h>
#include <stdlib.h>

// GLEW 포함. gl.h나 glfw.h를 포함하기 전에 포함해야 함.
#include <GL/glew.h>

// GLEW 도 포함
#include <GLFW/glfw3.h>
// GLM 포함
#include <glm/glm.hpp>
using namespace glm;

int main() {
	// GLFW 초기화
	if (!glfwInit())
	{
		fprintf(stderr, "GLFW 초기화 실패\n");
		return -1;
	}

	glfwWindowHint(GLFW_SAMPLES, 4); // 4x 안티에일리어싱
	glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3); //OpenGL 3.3 을 쓸 겁니다.
	glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);
	glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE); // MacOS 가 기분 좋아짐; 꼭 필요한 부분은 아님
	glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE); //옛날 OpenGL은 원하지 않아요

	// 새창을 열고, OpenGL 컨텍스트를 생성
	GLFWwindow* window; // (후술되는 코드를 보면, 이 변수는 전역입니다)
	window = glfwCreateWindow(1024, 768, "Tutorial 01", NULL, NULL);
	if (window == NULL) {
		fprintf(stderr, "GLFW 윈도우를 여는데 실패했습니다. Intel GPU를 사용한다면, 3.3 지원을 하지 않습니다.");
		glfwTerminate();
		return -1;
	}
	glfwMakeContextCurrent(window); // GLEW초기화
	glewExperimental = true; // 코어 프로파일을 위해 필요함
	if (glewInit() != GLEW_OK) {
		fprintf(stderr, "Failed to initialize GLEW\n");
		return -1;
	}

	glfwSetInputMode(window, GLFW_STICKY_KEYS, GL_TRUE);

	do {
		// 아무것도 그리지 않습니다. 두번째 튜토리얼에서 만나도록 하죠!

		// 버퍼들을 교체
		glfwSwapBuffers(window);
		glfwPollEvents();
	} // 만약 ESC 키가 눌러졌는지 혹은 창이 닫혔는지 체크
	while (glfwGetKey(window, GLFW_KEY_ESCAPE) != GLFW_PRESS &&
		glfwWindowShouldClose(window) == 0);
}

 

 

'Study > 그래픽스' 카테고리의 다른 글

2. 첫 삼각형2  (0) 2020.11.12
1. 첫 삼각형  (0) 2020.11.10