전체 글

자습

삼항 연산자 주의점

bool Check1 (int a, int b, int c, int d) { return (a

자습

고속 역 제곱근 vs math 제곱근

https://ko.wikipedia.org/wiki/%EA%B3%A0%EC%86%8D_%EC%97%AD_%EC%A0%9C%EA%B3%B1%EA%B7%BC 고속 역 제곱근 - 위키백과, 우리 모두의 백과사전 고속 역 제곱근(高速逆-根, fast inverse square root)은 때때로 Fast InvSqrt()나 16진수 0x5f3759df라고도 하는, IEEE 754 부동소수점 체계의 32비트 실수에 대한 제곱근의 역수를 계산하기 위한 알고리즘이다. ko.wikipedia.org - 고속 역제곱근을 통한 제곱근 연산 1000만회 vs math.h의 sqrtf 1000만회 -> 10회 반복 #include #include #include #include #include #inclu..

WIN32API FrameWork/한단계씩 직접 구현

51. 원형 충돌

http://hyrule.tistory.com/111 *** 공부 방법 *** 1. 코딩을 해야 하는 부분은 첫 부분에 변수나 함수, 메소드에 대한 선언이 코드블럭으로 표시되어 있다. //ex) MakeFunction(); 2. 코드블럭 하단에는 해당 선언에 대한 구현 로직이 작성되어 있다. 처 hyrule.tistory.com [ 사전 지식 ] HBRUSH PrevBrush = (HBRUSH)SelectObject(hDC, GetStockObject(HOLLOW_BRUSH)); //... 그림 그리기 ... SelectObject(hDC, PrevBrush) - 윈도우 API에서 기본으로 제공하는 HBRUSH 또는 HPEN을 사용한다. - 우리가 사용할 기본 브러시..

WIN32API FrameWork/한단계씩 직접 구현

50. 데미지

http://hyrule.tistory.com/111 *** 공부 방법 *** 1. 코딩을 해야 하는 부분은 첫 부분에 변수나 함수, 메소드에 대한 선언이 코드블럭으로 표시되어 있다. //ex) MakeFunction(); 2. 코드블럭 하단에는 해당 선언에 대한 구현 로직이 작성되어 있다. 처 hyrule.tistory.com class CGameObject; class CCharacter; - 가상함수로 선언하고, CCharacter에서도 재정의를 해 준다. - Update(), PostUpdate(), Render()과 마찬가지로 부모의 메소드를 호출한다. - 일단 CCharacter과 CGameObject에는 메소드..

WIN32API FrameWork/한단계씩 직접 구현

48. 스케일 조정

http://hyrule.tistory.com/111 *** 공부 방법 *** 1. 코딩을 해야 하는 부분은 첫 부분에 변수나 함수, 메소드에 대한 선언이 코드블럭으로 표시되어 있다. //ex) MakeFunction(); 2. 코드블럭 하단에는 해당 선언에 대한 구현 로직이 작성되어 있다. 처 hyrule.tistory.com [ 사전 지식 ] StretchBlt(hDC, (int)RenderLT.x, (int)RenderLT.y, (int)(RenderSize.x), (int)(RenderSize.y), Current->m_Sequence->GetTexture()->GetDC(CurrentFrame), 0, 0, (int)m_Size.x, (int)m_Size.y, SRCCOPY); - 마지막 인자를..

WIN32API FrameWork/한단계씩 직접 구현

47. 이펙트

http://hyrule.tistory.com/111 *** 공부 방법 *** 1. 코딩을 해야 하는 부분은 첫 부분에 변수나 함수, 메소드에 대한 선언이 코드블럭으로 표시되어 있다. //ex) MakeFunction(); 2. 코드블럭 하단에는 해당 선언에 대한 구현 로직이 작성되어 있다. 처 hyrule.tistory.com [ 오류 수정 ] - HitPoint 값을 Src와 Dest 모두 바꿔주어야 하는데 Src의 값만 변경하였음. - HitPoint의 값을 Src와 Dest 둘 다 변경해주어야 하므로 HitPoit..

WIN32API FrameWork/한단계씩 직접 구현

46. 충돌 처리 6 - 충돌 로직 개선 및 박스충돌 완성

http://hyrule.tistory.com/111 *** 공부 방법 *** 1. 코딩을 해야 하는 부분은 첫 부분에 변수나 함수, 메소드에 대한 선언이 코드블럭으로 표시되어 있다. //ex) MakeFunction(); 2. 코드블럭 하단에는 해당 선언에 대한 구현 로직이 작성되어 있다. 처 hyrule.tistory.com 조금이나마 성능 최적화를 해보고자 코드를 개선해보았다. [ 개선 내용 ] enum class ECollision_Interaction { Ignore, Collision }; -> 해당 열거체 제거. 충돌 여부 bool로 대체 struct CollisionProfile { std::stringName; ECollision_ChannelChannel; boolEnable; std:..

WIN32API FrameWork/한단계씩 직접 구현

45. 충돌 처리 5 - 실제 충돌체 생성 및 관리

http://hyrule.tistory.com/111 *** 공부 방법 *** 1. 코딩을 해야 하는 부분은 첫 부분에 변수나 함수, 메소드에 대한 선언이 코드블럭으로 표시되어 있다. //ex) MakeFunction(); 2. 코드블럭 하단에는 해당 선언에 대한 구현 로직이 작성되어 있다. 처 hyrule.tistory.com class CGameObject - 충돌체는 CGameObject에 종속되어 해당 CGameObject의 충돌을 판정하게 될것이다. - 한 게임오브젝트에 여러 개의 충돌체가 있을수도 있고, 충돌체가 종종 생성/제거될 일이 있으므로 여기에 맞는 자료구조를 생성해주어야 한다. -- +참조 카운팅을 사용하여 포인터 관리의 편의를 도모한다. < std::list < AddCollider..

자습

std::list의 begin()과 end()

https://blog.daum.net/darkprisoner/123 [C++] stl list의 end() list 자료구조의 end() 함수는 그 리스트의 마지막 지점을 의미한다. 그런데 마지막 부분을 기록하기 위해 특정 메모리를 할당받은 것이 아닌 0xcdcdcdcd (Visual studio 기준) 값을 리턴한다. 좀 더 정확 blog.daum.net - 요약 -- list는 head로 시작해서 head로 끝나는 순환 구조이다. --- begin()은 head의 바로 다음 노드를 반환한다. --- end()는 head 노드를 반환한다. - 궁금증 -- List의 중간 값을 하나 지우거나, 중간 구간을 지우거나, clear() 해버리면 end() 반환값이 달라질까? 결론: 안바뀜 실험 코드

자습

Notify 최적화 테스트

- 2D 게임의 애니메이션에서 특정 프레임에 실행될 노티파이를 실행시키는 방법은 두가지 -1. 애니메이션의 프레임 수와 일치하는 Notify 배열을 만들어서 n번 애니메이션 프레임이 재생될 때 Notify 배열의 n번 인덱스에 들어가서 등록된 Notify가 있는지 확인하고 실행 -- 공간을 좀 더 잡아먹는 대신 좀더 효율적이라고 예상 -2. Notify 구조체에 함수 포인터와 실행될 Frame을 등록해 놓고 생성될 때마다 배열에 pushback 해놓은 뒤 한 프레임 프레임 당 Notify가 모여있는 배열을 모조리 순회 돌면서 저장된 Frame 번호와 현재 재생되고 있는 Frame 번호가 일치하는지 확인하고 실행 -- 공간을 덜 잡아먹는 대신 좀 더 비효율적이라고 예상 - 둘 중 어떤게 빠른지 실험해보기 ..

WIN32API FrameWork/한단계씩 직접 구현

44. 충돌 처리 4 - 사각형 충돌체 (Box Collider)

http://hyrule.tistory.com/111 *** 공부 방법 *** 1. 코딩을 해야 하는 부분은 첫 부분에 변수나 함수, 메소드에 대한 선언이 코드블럭으로 표시되어 있다. //ex) MakeFunction(); 2. 코드블럭 하단에는 해당 선언에 대한 구현 로직이 작성되어 있다. 처 hyrule.tistory.com [ 사전 지식 ] - 색을 넣어서 그리고 싶을 때 사용한다. - HBRUSH 변수에 넣어 사용한다. RGB 색깔에 해당하는 HBRUSH를 생성해준다. - 사용한 HBRUSH는 소멸자에서 제거해 주어아 햔다. < FrameRect(hDC, &Rectangle, Hbr..

hyrule
C++ 프로그래밍 공부