컴퓨터 그래픽스 23

#5 tinylender 개발일지 : 상태 머신 적용

GUI를 만들었으니 이제 입력에 따라 상태가 변화해야한다.그래서 현재 상태에 따라 동작하게끔 상태 머신을 만들었다. Contextclass Context{ public: Context(IState* layerState, IState* dotState, IState* lineState, IState* surfaceState); void Transition(eUIState state); void HandleState(); eUIState GetState() const {return mState;} private: eUIState mState; IState* mCurrentState=NULL; IState* mL..

#4 gulender 개발일지 : mesh, model 그리고 assimp 세팅

GUI를 만들고, UI에 맞춰 상태 머신을 만들다가 느낀것이..우선 메쉬를 따로 분리해야 할 것 같았다.그래야 지금 내가 조작중인 메쉬에 접근해서 뭘 할수 있으니깐..지금은 vbo, vao, ebo 모두 대충 메인에 박혀있다. 그래서 분리하고자 mesh, model 클래스를 만들었다.class Mesh{ public: Mesh(std::vector vert, std::vector idx, std::vector tex, const GLchar* vertexPath, const GLchar* fragPath ); std::vector vertices; std::vector indice; st..

#3 gulender 개발일지 : rpath 설정

맥북에서 윈도우 게임을 즐기기위해..게임포팅툴킷을 설치하려고...sonoma로 맥을 업데이트 했더니.........빌드가 터졌다^______________^ 더 정확히 말하자면 빌드가 안되는 건 아니고실행 시점에서 문제가 생긴다.Library not loaded: @rpath/libglfw.3.dylibReason: no LC_RPATH's found 에러로그를 살펴보면 libglfw.3 동적 라이브러리 파일 경로를 못찾는다고 나온다.보통 dylib 파일은 usr/local/lib에 있는데..터미널에서 찾아보면아니 잘 있구만.. 컴파일, 링크, 빌드c, c++과 같은 언어에서는컴파일을 통해 오브젝트 파일을 만들고링커를 통해 동적 라이브러리 파일과 링크해서실제 실행파일을 만든다.그러니깐 빌드는 잘 되는데r..

#2 gulender 개발일지 : GUI 개발

저번 글에서 버텍스를 수정하는 기능을 만들었다.앞으로도 여러 기능이 추가될텐데..기능이 추가되기 위해서는 입력을 컨트롤 할 수 있어야 한다.그래서 기능을 더 추가하기 전에, 먼저 GUI를 만들었다. 외부 라이브러리처음에는 외부 라이브러리를 활용하려고 했었다.https://github.com/ocornut/imgui GitHub - ocornut/imgui: Dear ImGui: Bloat-free Graphical User interface for C++ with minimal dependenciesDear ImGui: Bloat-free Graphical User interface for C++ with minimal dependencies - ocornut/imguigithub.comhttps://g..

#1 gulender 개발일지 : 기본적인 조작, 버텍스 수정 기능

우선 openGL에 대한 기본적인 지식을 learnOpenGL 이라는 사이트에서 공부했다. https://learnopengl.com/ Learn OpenGL, extensive tutorial resource for learning Modern OpenGL Welcome to OpenGL Welcome to the online book for learning OpenGL! Whether you are trying to learn OpenGL for academic purposes, to pursue a career or simply looking for a hobby, this book will teach you the basics, the intermediate, and all the advanced..

#0 gulender 개발일지 : 개요

작년 이맘때쯤에, 오리키우기 이후 만들 게임을 구상하고 있었다. 여러가지 아이디어가 있었고, 그 중에 생각했던게 방치형 모바일 3d 농장 게임이 있었다. 3d 게임 포폴이 취업시장에서는 높게 쳐준다는 말도 있었고, 쉐이더에 관심이 있어서 쉐이더를 다뤄보고 싶었다. 그런데 가장 큰 장벽은.. 당연히 3d 모델링 그런데 당시 내가 원하는 스타일이 사실적인 느낌의 3d가 아니라 오리키우기처럼 캐주얼한 스타일이였기에 그림도 그릴줄 아니깐.. 내가 만들 수도 있을 것 같았다. 이런 느낌으로 만들고 싶었다. 그래서 호기롭게 블렌더3d를 깔아서 좀 다뤄보고 느낀 소감은.. 너무 어렵다 음..그냥 상상해보기엔 그냥 구 하나 늘려서 잎부분 만들고 원통 하나 늘려서 가지 만들어서 붙이면 나무를 만들 수 있을 것 같다고 생..

5. 렌더링 파이프라인

렌더링 파이프라인이라 3차원으로 만들어진 리소스를 2차원인 화면에 렌더링 하는 과정을 말한다. 입력 조립기 단계(Input Assembler) 입력 조립기 단계에서는 메모리에서 정점과 인덱스와 같은 기하 자료를 읽어서 기본 도형을 조립한다. - 정점(버텍스) 수학적으로 정점은 두 변이 만나는 점이다. 그러나 Direct3D의 정점은 도형의 꼭짓점 이상의 의미를 가지는데, 공간적 위치 외에도 정점에 법선 벡터를 추가하거나 텍스처 좌표를 추가하는등 다양한 커스텀 정점 형식이 있다. - 인덱스 3차원 물체의 기본 요소는 삼각형이다. 이러한 삼각형을 만들기 위해 정점 목록을 만들어 두고, 해당 정점들을 어떤 순서로 사용할지 인덱스를 적절히 나열함으로써 삼각형을 정의한다. 정점 셰이더 단계 입력 조립기 단계에서 ..

4. Direct3D의 초기화와 Tutorial02 코드 분석1

https://github.com/walbourn/directx-sdk-samples GitHub - walbourn/directx-sdk-samples: This repo contains Direct3D 11, XInput, and XAudio2 samples C++ samples from the legacy D This repo contains Direct3D 11, XInput, and XAudio2 samples C++ samples from the legacy DirectX SDK updated to build using the Windows 10 SDK - GitHub - walbourn/directx-sdk-samples: This repo cont... github.com 여기에 Direc..

DirectX11 개발 환경 설정

visual studio로 DirectX를 개발하기 위해 우선 개발 환경을 설정했다! https://developer.microsoft.com/ko-kr/windows/downloads/windows-sdk/ Windows SDK - Windows 앱 개발 Windows 11용 Windows SDK에는 Windows에서 실행되는 앱을 만들 때 사용할 수 있는 헤더, 라이브러리 및 도구가 포함되어 있습니다. developer.microsoft.com 우선 여기서 windowSDK를 설치했다. DirectX11부터는 windowSDK에 기본으로 들어가 있다고 한다.. 그리고 처음에 좀 해맸는데.. 비주얼 스튜디오에서 빈 프로젝트를 생성한 다음에 프로젝트 - 속성- VC++ 디렉터리로 가서 포함 디렉터리에서 ..