개발/OpenGL / / 2022. 2. 15. 19:34

OpenGL 공부일지 - OpenGL Super Bible 시작하기

반응형
※ OpenGL을 공부하면서 중요하다고 생각되는 부분이나 개인적으로 느끼는 점을 적는 공간이다

 

그래픽스 파이프라인에 대해서는 단어만 들어봤지 그 구조나 하드웨어 관련 로직에 대해서는 더 공부할 필요가 있다.

 

프리미티브(primitive)는 렌더링의 기본 단위라고 한다. 

점, 선, 삼각형 등의 단위를 조합해서 OpenGL로 보내 래스터라이저(rasterizer)라는 하드웨어를 통해 렌더링 한다.

버텍스 (vertex)는 좌표 공간의 점을 말하며, 그래픽스 파이프라인은 첫 번째 파트인 프론트엔드(front end)에서 버텍스와 프리미티브를 처리한다.

래스터라이저 이후 백엔드(back end)로 전달되어 여기서 또 여러 작업을 수행한다.

 

그래픽스 파이프라인의 구조에 대해서는 상당히 추상적이라 아직 감이 잘 오지 않는다.

 

OpenGL Super Bible의 코드들을 공부하기 위해서는 include 파일을 다음 github에서 받아야한다.

(현재 마지막으로 super bible 7까지 있는 것 같은데, 필자는 super bible 6버전을 사용하고 있기에 sb6code를 사용한다)

https://github.com/openglsuperbible/sb6code

 

GitHub - openglsuperbible/sb6code: Source code for OpenGL SupeBible 6th Edition examples

Source code for OpenGL SupeBible 6th Edition examples - GitHub - openglsuperbible/sb6code: Source code for OpenGL SupeBible 6th Edition examples

github.com

 

github의 소스에서 sb6헤더를 가져오기 위해 include 디렉터리를 visual 프로젝트 설정에서 위 그림처럼 디렉터리에 포함시켰더니 include "sb6.h"하였을 때 찾기는 하는데, 헤더로 들어가보니 glfw.h라는 것이 필요한가보다.

glfw와 관련된 헤더들은 extern/glfw-2.7.6에 들어있다. 이 디렉터리도 포함해볼까?

 

포함시킨 헤더를 열면 인코딩이 바뀌었다는 무서운 이야기를 하는데, 원본과 비교해보면, 바뀐 부분은 

Copyright © 2012-2013 Graham Sellers

Copyright 옆의 기호만 유니코드에 포함되지 않아 변경된 것이다.

 

조금 찾다보니 이미 같은 삽질을 한 사람들의 친절한 포스팅을 발견했다.

https://sangdo913.tistory.com/50

 

[그래픽스] OpenGL Super Bible 6th를 위한 환경 설정을 해보자!

그래픽스 책을 딱 편 순간, 처음에 샘플 코드를 실행시켜보라는 곳이 있더군요. 예제 코드는 아래에서 다운받을 수 있습니다! http://download.hanbit.co.kr/exam/2204/ 하지만, 역시나 환경 설정을 안해주

sangdo913.tistory.com

https://hurderella.tistory.com/81

 

OpenGL Super Bible 6th 예제 실행하기.

아래의 설명은 Windows10 / Visual Studio 2015을 기준으로 합니다. 댓 바람에 떠오른 아이디어 때문에 이 비싼 책을(대략 43000원) 쿠폰과 마일리지 싹싹 긁어다가 35000원에 사서는 주말동안 예제 돌려보

hurderella.tistory.com

상당히 오래된 책이라 예제 컴파일 문제에 대한 포스팅이 많아 금방 찾을 수 있었다.

 

조금 찾아보니 super bible은 상당히 불친절한 책임을 알게되었다.

심지어 책의 예제 프로젝트 이름과 소스코드의 예제 프로젝트 이름도 제작기 달라서 참고하기도 힘들다.

 책에서 첫 번째로 나오는 예제의 프로젝트이름은 my_application인데 소스코드에서는 simpleclear라는 이름으로 되어있어 필요할 때 어디에 소스코드가 있는지 참고하기 번거롭고,

 모든 프로젝트를 실행할 때 마다 프로젝트 설정에서 'Linker → input'에서 종속성에 GLWF.lib를 추가해야하는 작업을 해야한다.

 

그래서 프로젝트를 따로 하나 만들고 그 안에 cpp파일들을 직접 작성하려고 한다.

참고로 visual에서 프로젝트 옵션을 설정하거나 visual studio 프로젝트를 열 때 IDE버전을 최신으로 업그레이트하거나 모두 vcxproj파일에 기록된다.

 

프로젝트의 설정이 워낙 많아서 기존 프로젝트 하나의 .vcxproj.filters 파일과 .vcxproj 파일을 복사해서 이름만 바꾸고 사용하였다. 될까 싶었는데 잘 돌아간다.

 

문제가 하나 있다면 소스 코드의 경우 github가 남아있는데, alienrain이라는 예제를 보면 bin/media/textures/aliens.ktx 경로파일이 필요한데, 이 파일이 openglsuperbible블로그에 없다...

... 나중에 맞닥뜨리게 되면 다시 생각하기로 하자.

반응형
  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유