※ 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의 소스에서 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
https://hurderella.tistory.com/81
상당히 오래된 책이라 예제 컴파일 문제에 대한 포스팅이 많아 금방 찾을 수 있었다.
조금 찾아보니 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블로그에 없다...
... 나중에 맞닥뜨리게 되면 다시 생각하기로 하자.
'개발 · 컴퓨터공학' 카테고리의 다른 글
OpenGL 공부일지 - OpenGL Super Bible application 작성과 쉐이더 입문 (0) | 2022.02.17 |
---|---|
Learning Unreal 4 언리얼 공부일지 - 레벨을 꾸미기 위한 기능 [Material, LOD, Foliage] (0) | 2022.02.16 |
Learning Unreal 4 언리얼 공부일지 - Quixel Bridge 모델 임포트 해보기 + Material SM5 Error + Material 파라미터 조작 (0) | 2022.02.13 |
Learning Unreal 4 언리얼 공부일지 - StarterContent (0) | 2022.02.12 |
Learning Unreal 4 언리얼 공부일지 - Actor의 디테일을 알아보자 (0) | 2022.02.11 |