전체 글 64

#12 Tinylender 개발일지 : LightLayer 추가 (1)

이제 만든 모델링의 쉐이더를 조정해서 여러 표현을 할 수 있도록 만들 생각이였다.그런데 기본적으로.. 빛을 컨트롤 할 수 있어야 쉐이더가 유의미할것이다.그래서 Light를 생성하고 조작할 수 있는 기능을 만들었다.(이전까지는 빛이 특정위치에 하드코딩 되어있었다.) 텍스트박스 기능 추가이번 글의 주제와 직접적인 연관이 있는 것은 아니지만textbox에 새로운 기능을 추가했다!원래는 키보드 입력으로만 텍스트의 내용을 조정할 수 있었는데이젠 드래그로도 변경할 수 있다.  LightLayerclass LightLayer : public Layer{public: LightLayer() {}; LightLayer(std::string name, glm::vec3 lightColor, glm::vec3 ..

#11 Tinylender 개발일지 : color 기능 추가

이번에는 만든 메시의 색을 바꿀 수 있는 기능을 추가했다.더 정확히 말하자면 쉐이더의 설정을 변경하는 기능이기는 하다. 원래는 colorpicker를 만드려고 했는데..최대한 빨리 마무리하는 걸 목표로 잡아서버튼으로 때웠다.  구현void InspectorCanvas::SetColor(glm::vec3 color){ if (mSelectedLayer->layerType != eLayerType::SHAPE) return; static_cast(mSelectedLayer)->SetColor(color);}우선 인스펙터에서 선택된 레이어의 종류를 검사하고선택된 레이어의 SetColor()를 호출한다. void ShapeLayer::SetColor(glm::vec3 color){ ..

#10 Tinylender 개발일지 : 곡선으로 메시만들기

저번에 만든 Pen 스크립트로 2D 메시를 만들 수 있다.https://san10.tistory.com/59 #6 tinylender 개발일지 : 펜툴 제작3D 모델을 만드는 방식은 여러가지가 있지만,tinylender는 일러스트레이터처럼 먼저 펜툴로 2D 도형을 그린 다음, 그걸 3D화 시킬 생각이다.  그래서 우선 2d 메시를 만들 수 있는 펜툴을 만들었다. san10.tistory.com하지만 이 펜툴에 문제가 있다면곡선을 그릴수는 없어서 곡선이 있는 메시는 만들수가 없다.그래서 pen툴에 곡선을 그리는 기능을 추가했다.  베지어 스플라인사실 곡선도 종류가 많다.(베지어 곡선, 에르밋 곡선, 캣멀롬 스플라인, b-spline ....)저번에 오디세이 지형을 개발을 하다가 곡선도 이렇게 종류가 많다는..

#9 Tinylender 개발일지 : TextBox 개발 및 인스펙터

우리가 개발할때 아무렇지도 않게 쓰는 TextBox...타이니렌더에서 직접 다 만들어야한다...imgui쓸걸.... FreeTypehttps://learnopengl.com/In-Practice/Text-Rendering LearnOpenGL - Text RenderingText Rendering In-Practice/Text-Rendering At some stage of your graphics adventures you will want to draw text in OpenGL. Contrary to what you may expect, getting a simple string to render on screen is all but easy with a low-level API like OpenG..

#8 Tinylender 개발일지 : 레이어 개발(1)

오랫동안 개발일지를 안올렸지만일지 쓰기가 귀찮아서이지 개발하지 않은것은 아니다.그래서 미뤄놨던 일지를 쓰려고 한다개발했던 내용과 디버그 작업 등 지금까지 했던 걸 정리하려고 한다. 빌드개발하다가 중간에 또 빌드 한번 터졌었는데왜 터졌고 어떻게 고쳤는지는 기억이 잘.. duplicate symbol 'Extrude::OnPointerUp(float, float, float, float)' in: /var/folders/qr/tv7l9znj76v6chz562wdfwp00000gn/T/main-3318cb.o /var/folders/qr/tv7l9znj76v6chz562wdfwp00000gn/T/main-4abb74.o duplicate symbol 'ModifyVertex::OnPointerDown(floa..

#7 tinylender 개발일지 : extrude 기능 개발

펜 툴로 도형을 만들 수 있게 되었으니 실제로 3d로 만들 차례이다.그래서 그린 도형을 튀어나오게 만드는 extrude 기능을 만들었다. Extrudeclass Extrude:public IState, public IPressedDown ,public IPressed, public IPressedUp{ public: void Handle() override; void HandleOut() override; void OnPointerDown(float xpos, float ypos,float xdelta,float ydelta) override; void OnPointer(float xpos, float ypos,float xdelta,float yd..

#6 tinylender 개발일지 : 펜툴 제작

3D 모델을 만드는 방식은 여러가지가 있지만,tinylender는 일러스트레이터처럼 먼저 펜툴로 2D 도형을 그린 다음, 그걸 3D화 시킬 생각이다.  그래서 우선 2d 메시를 만들 수 있는 펜툴을 만들었다. penclass Pen: public IPressedDown,public IMoved,public IState{ public: Pen(); void DrawMesh(); void OnPointerDown(float xpos, float ypos,float xdelta,float ydelta) override; void OnMove(float xpos, float ypos,float xdelta,float ydelta) override; ..

#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..