
이번 게시물에서는 OpenGL 환경세팅하는 방법에 대해 소개하겠다.IDE는 Visual Studio 2022를 사용했다.우클릭한다opengl32.lib과 glfw3.lib를 추가한다.64비트라도 opengl32.lib를 넣는다.여담으로 opengl32.lib는 visu

텍스쳐를 넣는 게 키 포인트.이렇게 그림자가 나온다.하지만 지정된 범위를 넘어서면 그림자가 결국 나오지 않는다.어떻게 해야할까?매개변수 상하좌우를 키우면 된다.glm::mat4 lightProjection = glm::ortho(상, 하, 좌, 우, near_plane

전 게시물에서는 그림자에 대해 배웠다. 그러나 만약 맵에 있는 모든 fragment의 그림자를 구현한다면 어떻게 될까? 맵이 넓다면 심한 과부화가 생길 것이다. 그래서 이를 최적화하기 위해, 현재 내 카메라 시야(화면) 주변에만 집중적으로 그림자를 계산하는 기술을 구현

OpenGL로 개발을 진행하다 보면 순수하게 코드에 vertex 배열을 타이핑해서 모델을 그리는 방식에는 금방 한계를 느끼게 된다. 그래서 외부 3d 툴인 Blender에서 모델을 만들고 obj 파일로 내보낸 뒤, 이를 C++ 코드로 가져오는 방법을 찾아보았다. 그 과

기존의 프로젝트는 평면이었다. 이대로는 게임으로서 재미가 없을 것 같아서, 마인크래프트처럼 울퉁불퉁한 지형을 랜덤으로 생성하기로 했다. 노이즈 함수 FBM Fractal Brownian Motion 여러 스케일의 노이즈를 합쳐서 자연스러운 지형 형태를 만드는 기법

랜덤으로 지형을 만들다 보니까 지형(terrain)이 가까이서 보면 너무 평평해 보인다. 텍스쳐에 입체감이 안 느껴져서 TBN 행렬을 이용해 올바른 노멀매핑으로 만들었다. TBN = \[ T | B | N \] (3x3 행렬) 결과

이번에는 UI를 그릴거다.UI를 그리기 위해서는 먼저 2D 사각형 형태의 폴리곤이 필요하다.크기는 셰이더에서 픽셀 단위로 조절할 것이기 때문에, 여기서는 가로세로 1짜리 단위 사각형(0~1)으로 정점(Vertex) 데이터를 만든다.이렇게 하나의 음식 아이콘 텍스처와 사

이번엔 서바이벌게임답게 아몬드를 맵 랜덤으로 생성시키려고 한다.원리는 간단하다. 랜덤으로 xz값을 생성하면 terrian->getHeightAt(x,z)로 높이를 구해서 지형위에 생성시킨다.참고로 vs, fs는 mouse로 대체했다.업로드중..

이번 시간에는 오픈월드 게임처럼 맵을 무한정 탐험할 수 있는 시스템을 구현해 볼 거다.플레이어의 위치를 실시간으로 추적하며, 현재 위치를 기준으로 로드/언로드할 청크를 계속 계산한다.계속 자신의 위치 기준 언로드 / 로드 할 청크를 계산한다.desired 목록(현재 있
이상하게 OpenGL에서 cout로 한글을 출력하려고 하면 에러가 생긴다.UTF-8로 전환했는데도 잘 안된다.어떻게 해결해야할까?실행 초기에 아래 코드를 넣으면 된다.잘된다.

프로그램 로딩하는데 랙이 너무 걸린다. 살펴보니 obj와 지형 로드하는 과정에서 2.2초나 소모되고 심하면 응답없음도 나온다. 비동기 로드로 해결해보자 먼저 청크 매니저에서 언로드 로드 하는 함수를 보자. 다른 거 필요 없다. requestLoadChunks 함수를