목록전체 글 (70)
Visual Studio
게임 그래픽에서 많이 사용하는 용어이다. 플레이어의 카메라와 물체 사이의 거리, 화면 크기 등에 따라 얼마나 메시를 디테일하게 표현할 지 결정하는 것이다. 거리가 먼 물체는 단순하게 표현되고, 가까이 다가가면 복잡한 메시가 렌더링된다. unity나 unreal 같이 우리가 자주 사용하는 게임 엔진에서는 보통 한 오브젝트에 대해 미리 단계별로 메시들을 만들어 놓고 이를 LOD 그룹으로 묶어서 임포트하여 거리에 따라 다른 폴리곤 갯수의 메시를 렌더링하도록 만든다.
한동안 너무 C++를 안써서 기억이 가물가물하다. 사용하면서 기억해둘만한 것들이나 까먹기 쉬운 것을 메모한다. singleton example code https://github.com/ReolSt/GLEngine/blob/main/GL/core/Singleton.h 예전에 opengl 기반 엔진 만들때 썼던 싱글턴 클래스이다. "어떻게 쓰는데요?" // in YourClass.h class YourClass : public Singleton { 원하는 대로 하세요... }; // in main.cpp int main() { ... auto instance = YourClass::GetInstance(); ... } static member function definition outside of head..
오브젝트 선택 후 기즈모를 Alt+휠 클릭 한 상태에서 원하는 방향으로 이동. 이상태로 focus 해제하면 다시 원래대로 돌아감. 만약 변경한 피벗으로 고정하고 싶다면 오브젝트 우클릭 -> pivot -> Set as Pivot Offset
dynamic binding(late binding) - Runtime에 값이 결정됨. 타입이 분명하면 static binding(early binding) 부모 클래스의 포인터로 선언된다면 dynamic binding
I.예선 정답률 A 자산증감 10 213 7.04% B 행렬 게임 10 228 16.67% C 나무 자르기 20 224 15.18% D 게임 닉네임 20 116 22.41% E 정수 삼각형 20 141 43.26% F 2048게임 30 127 14.17% G 개미 미로 30 96 0.00% II.예선 결과 2 / 97 (168명이 신청했으나 97명만 참가함.) (공동2등) 등수 학번 총점 A B C D E F G 1 000000000 131 10 10 20 20 20 30 21 2 2017******(본인) 120 8 10 20 20 20 30 12 2 000000000 120 8 10 18 16 20 30 18 4 000000000 110 10 10 20 20 20 30 4 000000000 110 1..

C/C++의 매크로는 __VA_ARGS__로 가변 인자를 사용할 수 있는데. 매크로를 사용할 때 가변 인자 위치에 아무 파라미터도 주어지지 않으면 문제가 생긴다. 다음의 예제를 보자. #define CREATEOBJECT(A, B, ...) \ std::make_shared(B, __VA_ARGS__); \ ... CREATEOBJECT(ObjectType, param1) // std::make_shared
Linux 시스템 상에서 개발을 해본 사람이라면, GTK라는 이름을 한번쯤은 들어봤을 것이다.GTK는 GIMP Toolkit의 줄임말로, 본래 이미지 편집 프로그램인 GIMP의 개발을 위해 만들어진 GUI 라이브러리이지만,규모가 커지면서 범용 라이브러리가 되었다. GTK는 다른 GUI 라이브러리들이 객체지향 언어로 작성되었던 것과는 달리, 다른 언어들을 위한 바인딩을 쉽게 만들 수 있도록 하기 위하여 C로 작성되었다. GUI 애플리케이션을 개발하는데 있어 절차지향 설계보다는 객체지향 설계가 압도적으로 편하기 때문에 객체지향 시스템으로 설계하는 것이 일반적이지만, C는 언어 자체에서 OOP를 지원하지 않기 때문에 OOP로 개발하기 위해서는 추가적인 번거로운 작업이 필요하다.GTK 개발자들은 이를 위해 C를..
Phong Reflection Model에서는 재질의 속성을 ambient, diffuse, specular, shininess 네가지로 정의한다. 이중에 ambient, diffuse, specular는 보통 3차원 벡터이며, shininess는 실수값이다. 이 모델을 사용할 경우 단일 컬러 벡터를 사용할 때보다 파라미터가 많기 때문에 원하는 재질를 얻기 위해선 많은 시행착오를 해야 하지만, 능력자들이 편리하게 쓸수 있게 셋팅값을 정리해 놓았다. http://devernay.free.fr/cours/opengl/materials.html OpenGL/VRML Materials devernay.free.fr Name Ambient Diffuse Specular Shininess emerald 0.0215..

개인적으로 git을 사용하다 보면 이전에 커밋했던 내용들을 수정하고 싶을 때가 있다. 이럴때 쓰는 명령어가 rebase인데, git rebase --committer-date-is-author-date -i [바꾸고싶은commit의부모의id] 이렇게 --committer-date-is-author-date 옵션을 붙이면 각각의 commit을 amend 할 때 committer date가 현재 시각으로 갱신되지 않는다. 하지만 커밋을 여러 개로 분할 하고자 하거나, 커밋의 내용을 수정해야 할 때는 reset 한뒤에 따로따로 add 하고 commit 해야 하는데, 이렇게 되면 해당 옵션은 더이상 아무 역할도 하지 않는다. 결국 커밋할 때 author date와 committer date를 기존의 커밋과 동일..

# 처음 주어지는 라인이 정수 N인 경우(혹은 문제 해결에 있어 필요 없는 경우) L = list(map(int, [*open(0)][1:])) # 첫 라인 부터 element가 주어지는 문제의 경우, unpacking이 필요없음. L = list(map(int, open(0))) # 이후 코드에서 index 없이 iterate 할 경우 list로 변환하지 않아도 된다. L = map(int, [*open(0)][1:]) for e in L: print(e) 비교적 짧은 코드로 N개의 정수가 주어지는 문제에서 처음 주어지는 N을 제외한 eof까지 모든 라인 입력을 정수로 가져올 수 있다. 온라인 저지 사이트에서 아래 코드와 같은 동작을 한다고 생각하면 된다. N = int(input()) L = [] f..