2024/10 25

[Devlog-DX11] HOLLOW KNIGHT 모작 - Video - 블러 처리 시도

Blur 처리 박스 블러 코드는 적용했고, 일단 돌아는 가는데 박스 블러 효과를 볼 순 없었다. 그리고 무엇보다 가장 큰 단점으로는 pixel.size를 너무 크게 잡았기 때문인지, 버벅거리는 현상이 짙다. 블러 이미지클래스를 만들어준 뒤 다음과 같은 코드를 추가해주었다. 결과적으로 렌더 함수는 돌고 있지만, 뭔가 그려주는 함수가 잘 작동하지 않는 것 같았다. 나중에 쉐이더책 보고 dx에 대한 내공좀 쌓은 뒤 다시 도전해야겠다. #include "framework.h" #include #include #include ID3D11Buffer* BlurImage::vertexBuffer = nullptr; ID3D11Buffer* BlurImage::uvBuffer = nullptr; void BlurIma..

이득우의 게임 수학 3장 벡터(2차원 공간)

벡터로 원그리기반지름이 5인 원을 생성하기 위해,먼저 원을 둘러싼 사각형 영역을 생성하고,이로부터 원을 구성하는 벡터만 골라내는 방법을 시각화 할 것이다. 반지름의 크기가 5보다 작거나 같은 벡터를 묶으면 원의 형태가 만들어진다. #pragma oncenamespace CK{struct Vector2...FORCEINLINE float Vector2::Size() const{ return sqrtf(SizeSquared());} // x^2 + y^2의 값을 계산한 후 그 값을 반환한다.FORCEINLINE constexpr float Vector2::SizeSquared() const{ return X * X + Y * Y;}...  이 영역을 구하는 벡터의 크기는 벡터의 크기 수식을 사용해 계산..

[백준 골드5] 버블 소트

swap된 거리가 가장 길었던 것에 +1을 하면 된다.여기서 버블 정렬의 이중 for문에서 안쪽 for문이 돌 때swap이 일어나지 않은 반복문이 한 번 더 실행되는 것을 감안해 최댓값에 1을 더한다.  #include #include #include #include #include #include #include #include #include using namespace std;int main(){ ios::sync_with_stdio(0); cin.tie(0); int n, max = 0; cin >> n; vector>v(n); for (int i = 0; i > v[i].first; v[i].second = i; } sort(v.be..

[실버3] 삼삼한 수 2

3의 0제곱도 포함하는 것이니, n%3의 값이 1이 될 수 있다.또한 음의 수는 포함하지 않으나, "작거나" 같은 수라 했다.작거나는 0의 예외처리를 뜻하는 것이다.0의 경우 예외처리가 바로 생각나지 않아서 4번 틀렸다.  #include #include #include #include #include #include #include #include using namespace std;bool IsSumOfPowers(long long int n);int main(){ ios::sync_with_stdio(0); cin.tie(0); long long int n; cin >> n; if (n == 0) { printf("NO"); return 0; ..

이득우의 게임 수학 열기

Update - 콘텐츠를 구성하는 물처의 최종 위치를 계산하고 이를 변수에 저장 Render - 변수에 저장된 물체의 위치를 읽고, 이를 중심으로 물체를 화면에 그려냄 실제 실습 코드가 사용될 영역 이 코드에서 InputAxis::XAxis는 enum class 이다. 어떠한 상태 변환을 enum으로 변환시켜주는 것이다.// 게임 로직과 렌더링 로직이 공유하는 변수 Vector2 currentPosition(100.f, 100.f); // 게임 로직을 담당하는 함수 void SoftRenderer::Update2D(float InDeltaSeconds) { // 게임 로직에서 사용하는 모듈 내 주요 레퍼런스 auto& g = Get2DGameEngine(); const InputManager& input..

[백준 실버1] 11286 절대값 힙

중요한 조건은 드래그한 저 줄이다. 배열에 입출력에 대한 조건이 있다.1. 입력할 때 0이 아닐 때,2. 출력할 때 0일 때, 하지만 출력에 조건이 있다.1. 절대값이 가장 작을 것2. 절대값이 가장 작은 수가 중복될 경우 가장 작은수 출력(= 음수 출력) 출력에 대한 조건에 우선 순위에 대한 명확한 기준이 있다.이는 우선 순위 큐로 구현하기 적합함을 알 수 있다.  #include #include #include #include #include #include #include #include using namespace std;struct compare { bool operator()(int a, int b) { if (abs(a) == abs(b)) { retur..

[백준 실버4] 2164 카드2

밑에 큐라고 써있는 만큼 선입선출(FIFO)의 구조를 가질 수 있는 구현 방법이다.차례대로 넣고 빼는 순서는 가장 먼저 넣은 것을 빼고 (= 큐에 있는 것을 뺀다)그 바로 뒤에 있던 카드를 뒤에 넣는다(= 큐에 새로 추가한다).다시 그리고 세 번째에 있던 카드를 뺀다.( = 큐에 있는 것을 뺀다)라는 과정의 반복이다. 카드가 단 1장 남을 때 까지면 Queue의 사이즈가 1일때 까지가 반복문의 조건된다.#include #include #include #include #include #include #include #include using namespace std;int main(void){ ios::sync_with_stdio(false); cin.tie(NULL); cout.tie(N..

[Devlog-DX11] HOLLOW KNIGHT 모작 - Audio 기능

Sound 클래스에서 STL map 을 이용한 SoundList를 관리한다. Key에는 해당 사운드를 불러올 string 을 넣어주고, Value에는 SoundNode 구조체를 가지고 있다. 따라서 Key값의 string 입력에 규칙을 정하면 음원 관리가 가능하다. 아래는 음원 규칙에 관련된 코드이다. E는 effect관련이며 (NPC대화 목소리, UI 소리 등) M는 배경음악을 관리한다. void Sound::SetAllVolume(float scale) { for (auto iter = SoundList.begin(); iter != SoundList.end(); iter++) { iter->second->channel->setVolume(iter->second->volume * app.soundSc..