목록Categories (1099)
KoreanFoodie's Study
이번 서평에서는 '타이탄의 도구들이라는 책을 다루며, 경제적 자유를 얻은 사람들이 공통적으로 꼽는 비결과 각자의 무기에 대해 다루고자 합니다. 경제적 자유를 얻은, 정상의 거인들 모든 사람이 성공하는 꿈을 꾼다. 하지만 실제로 그것을 이루는 사람은 매우 소수이다. 수많은 사람들은 그들을 보며 질문을 던진다. '성공하는 사람은 도대체 무엇이 다르기에 저 위치에 설 수 있었을까?' 대부분의 사람들이 성공하겠다는 "꿈"을 꿀 때, 거인들은 성공하겠다는 "목표"를 세운다. 그리고 자신들이 갖고 있는 튼튼한 갈고리를 이용해, 성공이라는 정상까지 우직하게 기어올라 간다. 책에서 소개하는 '타이탄의 도구들'이란, 큰 성공을 거둔 타이탄들이 자신의 성공을 일구기 위해 사용했던 '갈고리'인 습관들, 마음가짐 혹은 기믹들..
보호되어 있는 글입니다.
서울시 교육청 전자도서관에 우리나라에 미니멀리즘을 유행시켰던 책 중 하나인 "나는 단순하게 살기로 했다"가 있길래 무료로 빌려 읽어 보았다. 사실 평소에도 미니멀리즘을 동경했던 터라, 상당히 와닿는 부분이 많았던 책이었다. 사실 핵심은 간단하다. 1. 물건을 2배 가지고 있다고 해서 2배 행복해지지 않는다는 것 2. 물건을 사고 모으면서 물건이 공간과 나 자신을 소유하게 된다는 것 3. 물건에 빼앗기던 시간과 에너지를 온전히 내 자신에게 쏟을 수 있다는 것 이 세가지로 요약해볼 수 있겠다. 아, 물론 쓸데없는 지출이 줄어들고, 생활이 조금 더 여유로워 지는 부수입은 있겠다. 다만, 미니멀리즘은 절약이 아닌 '꼭 필요한 소유를 하는 것'이다. 라이프스타일 내지는 철학에 가까운 것이라고 해석하는 것이 자연스..
'DirectX 12를 이용한 3D 게임 프로그래밍 입문'을 읽으며 내용을 정리하고 중요한 부분을 기록하는 글입니다. 1. 벡터의 개념과 DirectXMath 라이브러리의 벡터 알아 두어야 할 개념들 : - 직교 투영 : projection이라고 하는 이 개념은, 그냥 기본이다. proj(w)v라고 하면 v벡터 중 w벡터 방향의 요소를 추출할 수 있다. - 그람 슈미트 직교화 (gram schmidt orthogonalization) 그람 슈미트 직교화는 선형대수학을 들으면 모를 수가 없을 정도로 중요한 정리이다. 간단히 말해서, N차원 공간의 벡터를 각 차원을 대표하는 벡터들로 분해(decomposition)하는 것이다. 구체적인 방법이나 증명은 아래 사진을 참고하면 된다. - 2차원 유사 외적 : 사..
DirectX 11 2D 게임 프로그래밍 - 15. UV 좌표 조작과 Sampler State설정 UV 좌표 조작하기 - UV 좌표를 임의로 늘릴 순 있지만, 픽셀 데이터를 추출할 때는 반드시 0~1 범위로 맞춰야 한다. Sampler State 설정과 세팅하기 - Filter에서는 세 가지만 기억 MIN - 축소, Mag - 확대, MIP - 밉맵 - Point에서는 끊어지는 듯한 이미지, Linear는 부드러운 이미지를 얻을 수 있다. - CLAMP, WRAP 등의 Address Mode를 활용하여 확장된 UV 공간을 처리할 수 있다. Mipmap 보충설명 Execute.cpp Sampler State를 설정해 주자. //Create Sampler State { D3D11_SAMPLER_DESC de..
DirectX 11 2D 게임 프로그래밍 - 14. Texture 설정과 이미지 띄우기 화면에 이미지 띄우기 - ID3D11ShaderResourceView를 사용하여 텍스쳐 자원 생성 - 텍스쳐 좌표계는 좌측 상단이 시작점이고, 0~1 범위로 정규화되어 있음 - HLSL에서는 Texture2D 자료형으로 텍스쳐 자원을 받는다 - 해당 픽셀이 그려낼 텍스쳐 색상을 추출하기 위해 Sample 함수를 사용한다 투명한 픽셀 제거하기 - clip() 함수를 이용해 제거할 수 있다. - if 문과 discard 키워드를 이용해 제거할 수 있다. Execute.h 먼저 헤더 파일에서 ID3D11ShaderResourceView를 만들어 준다. struct VertexTexture { D3DXVECTOR3 posit..
친해지고 싶은 사람은 어떤 사람일까? 모난 사람, 둥글둥글한 사람, 날카로운 사람, 포근한 사람. 세상에는 참 다양한 사람들이 있다. 하지만 '친해지고 싶은 사람'이 되는 것은 쉬운 일이 아니다. 실제로 많은 사람들에게서 사랑받는 사람들을 살펴보면, 대개 성격이 유하고 고집이 세지 않다는 것을 확인할 수 있다. 혹은 특정 부분에서 매력이 넘쳐 흐르거나. 음식도 마찬가지다. 사람도 음식도 자기 주장이 너무 강한 것은 사랑받기 힘든 법. 그런 의미에서 나는 파프리카가 싫다. 물론 파프리카를 좋아하는 분들도 많이 계시겠지만, 나는 대부분의 요리에서 파프리카의 향이 다른 재료들과의 조화를 이루지 못한다고 생각한다. 다만 몇가지의 예외가 있는데, 중식 요리에서 쓰이는 파프리카가 바로 그 중 하나이다. 팔보채나 중..
DirectX 11 2D 게임 프로그래밍 - 13. Rasterizer state과 좌표계 Rasterizer State 설정하기 - FillMode는 정점들로 인해 만들어진 영역을 어떻게 채울 것인가에 대한 정보이다 - CullMode는 어떤 면을 보이지 않게 할 것인가에 대한 정보이다 - FrontCounterClockWise는 정점이 그려지는 순서에 따라 앞면과 뒷면을 정해주는 값이다. Culling 과 Cliping DirectX vs OpenGL 좌표계 Execute.cpp 먼저 Execute.h에서 rasterizer_state를 선언해 준 후, Execute.cpp에서 D3DX... 에 해당하는 값들을 세팅해준다. ID3D11RasterizerState* rasterizer_state = n..
DirectX 11 2D 게임 프로그래밍 - 12. 행렬 결합 : 이동과 회전 행렬 결합하기 - 스케일 행렬에는 0이 들어가면 절대 안 된다 - 행렬은 교환 법칙이 성립하지 않는다 - 행렬 결합 순서는 스! 자! 이! 공! 부! (스케일, 자전, 이동, 공전, 부모) Execute.cpp D3DXMATRIX를 이용해서 행렬 연산을 통해 공간의 크기와 위치를 바꾸고, 회전을 시켜보자! // World : Scaling은 공간의 크기를 바꿀 수 있다. D3DXMATRIX S; D3DXMatrixScaling(&S, 100, 100, 1); std::cout
DirectX 11 2D 게임 프로그래밍 - 11. Constant Buffer 개념과 응용 Constant Buffer - HLSL에서 cbuffer타입으로 받을 수 있다. - 상수 버퍼는 반드시 16byte 단위로 정렬되어야 한다. - D3D11_USAGE_DYNAMIC은 GPU가 읽고, CPU가 쓰는 방식이다. World, View, Projection 행렬 적용하기 - Vertex Shader에서 mul() 함수를 통해 위치 벡터를 행렬과 곱하여 공간 변환시킬 수 있다. - DirectX는 행 우선, HLSL은 열 우선 방식으로 행렬을 생성한다. - HLSL에서는 row_maor 키워드로, DirectX에서는 Transpose로 행렬 생성 방식을 맞춰 줄 수 있다. Execute.cpp 먼저 Co..