C++
-
[WinAPI] Alt키 제어하기 (WM_SYSCOMMAND)C++/미분류 2024. 6. 18. 16:46
지난 Direct2D글에서 점프를 구현했고, 해당 기능을 Alt키에 할당했습니다.[Direct2D] 점프 구현하지만 방향키와 Alt키를 동시에 조작할 경우 정상적으로 조작이 되지 않을 수 있습니다.이는 버그가 아니라 기능으로, Alt키는 기본적으로 메뉴 탭을 활성화하는 기능이 있습니다.해당 기능은 정상적인 조작에 악영향을 끼치므로, 해당 기능을 제거해보도록 하겠습니다. 이번 글에서는 Alt키의 기본 기능을 핸들링하는 방법을 살펴보도록 하겠습니다.이번 글은 지난 글에서 코드가 이어집니다. 1. Alt키 메시지 살펴보기 더보기키보드 입력은 기본적으로 WM_KEYDOWN, KEYUP메시지를 전달합니다.하지만 Alt키는 입력 시 일반적인 키보드 입력과는 다른 메시지를 전달합니다.Alt키 뿐만 아니라 F10키도..
-
[Direct2D] 점프 구현C++/미분류 2024. 6. 13. 15:50
지난 글에서 플레이어 캐릭터가 착지할 수 있는 플랫폼을 만들었습니다.[Direct2D] 충돌 및 지형 구현위 글에서 생성된 플랫폼은 두 개 입니다.하지만, 플레이어 캐릭터는 위로 올라갈 방법이 없었습니다. 이번 글에서는 플레이어 캐릭터에 점프 기능을 추가하도록 하겠습니다. 1. 키 입력 추가 더보기이전에 구현한 중력 기능의 일부를 살펴보도록 하겠습니다.FLOAT downSpeed = ~~~;FLOAT gravity = ~~~;void Update() { ... FLOAT deltaDown = deltaTime * downSpeed; downSpeed += deltaTime * gravity; ...}위와 같이 낙하 속도를 증가시키는 등가속 운동을 구현했습니다.착지 판정 시 down..
-
[Direct2D] 충돌 및 지형 구현C++/미분류 2024. 5. 31. 17:35
지난 글에서 등속, 등가속 운동을 적용하여 중력을 구현했습니다.[Direct2D] 등속 운동, 등가속 운동, 중력 구현위 글에 따라 중력이 적용된 객체는 바닥이 없어 계속 추락하는 상태가 지속되었습니다.이번 글에서는 간단한 지형과 충돌을 구현하여 이미지가 착지할 수 있도록 해보겠습니다. 이번 글은 지난 글에서 코드가 이어집니다. 1. 충돌 판정 더보기이번 글에서 사용될 "충돌"은 두 기하(이미지)가 겹치는 경우를 의미합니다. 우선 D2D에서 사용되는 사각형은 D2D1_RECT_F 자료형을 사용하며, 형태는 다음과 같습니다.사각형의 상, 하, 좌, 우 모서리의 좌표를 사용합니다. 사각형 A와 B가 있다고 가정할 때, 두 사각형의 충돌 여부는 다음과 같이 판정할 수 있습니다.A의 오른쪽 모서리가 B의 왼쪽..
-
[Direct2D] 등속 운동, 등가속 운동, 중력 구현C++/미분류 2024. 5. 17. 18:08
지난 글에서 게임의 프레임 레이트를 구하고, 이미지를 출력하고, 이미지를 방향키로 움직여보았습니다.[DirectX] QPC로 FPS(프레임 레이트) 구현하기[Direct2D] 비트맵 이미지 움직이기 (2)이번 글에서는 위 코드들을 기반으로 이미지가 아래로 떨어지는 기능을 구현해보겠습니다. 0. OnRender함수 분리 더보기기존 OnRender함수는 이미지의 위치를 업데이트 하는 기능과 렌더링 하는 기능을 모두 담당했습니다.이제 위치 등과 관련된 물리량을 업데이트 하는 기능을 분리하도록 하겠습니다. 분리하는 함수는 Update라 명명하겠습니다.void MyApp::Update() { LARGE_INTEGER currentTime; QueryPerformanceCounter(¤tTi..
-
[Direct2D] ID2D1Effect : Chroma keyC++/미분류 2024. 4. 22. 15:41
크로마 키(Chroma key)는 화면 합성 등의 편집을 목적으로 한 단색 배경, 혹은 그 기술을 의미합니다. D2D는 이와 유사하게 이미지의 특정 색을 투명하게 바꾸는 효과를 제공합니다. 이번 글은 해당 효과를 이용하여, 이전 글의 검은 배경을 투명하게 편집해보도록 하겠습니다. 이번 글의 코드는 지난 글에서 이어집니다. [Direct2D] ID2D1Effect : Edge detection Chroma-key effect - Win32 apps | Microsoft Learn 또한, 위 MSDN에 기반하여 작성되었습니다. 1. Effect 생성 및 초기화 더보기 D2D Effect는 Device context에 의해 초기화되며, 이 때 적용활 효과에 대한 ID를 사용합니다. 크로마 키는 다음과 같이 초..
-
[Direct2D] ID2D1Effect : Edge detectionC++/미분류 2024. 4. 17. 11:09
D2D Effect는 이미지의 가장자리를 탐색하고, 그 위치에 선을 그리는 기능을 제공합니다. 이번 글에서는 해당 기능을 이용하여 이미지의 가장자리를 탐색해보도록 하겠습니다. 이번 글의 출력 결과는 지난 글의 코드에서 이어집니다. [Direct2D] ID2D1Effect 사용하기 [Direct2D] ID2D1Effect : Color matrix Edge-detection effect - Win32 apps | Microsoft Learn 또한, 위 MSDN에 기반하여 작성되었습니다. 1. Effect 생성 및 초기화 더보기 D2D Effect는 Device context에 의해 초기화되며, 이 때 적용활 효과에 대한 ID를 사용합니다. Edge detection은 다음과 같이 초기화 할 수 있습니다. ..
-
[Direct2D] ID2D1Effect : Color matrixC++/미분류 2024. 4. 12. 15:46
지난 글에서 D2D Effect와, 해당 객체를 사용해서 이미지에 아핀 변환을 수행하는 방법을 알아보았습니다. [Direct2D] ID2D1Effect 사용하기 [Direct2D] ID2D1Effect : Affine transformation 이번 글에서는 이미지의 색을 바꾸는 색조 행렬 변환에 대해 알아보도록 하겠습니다. 이번 글은 지난 글에서 코드가 이어집니다. [Direct2D] ID2D1Effect : Affine transformation Color matrix effect - Win32 apps | Microsoft Learn 또한, 위 MSDN에 기반하여 작성되었습니다. 1. Effect 생성 및 초기화 더보기 D2D Effect는 Device context에 의해 초기화되며, 이 때 적용..
-
[Direct2D] ID2D1Effect : Affine transformationC++/미분류 2024. 4. 9. 17:18
지난 글에서 D2D Effect에 대해 알아보았습니다. [Direct2D] ID2D1Effect 사용하기 이번 글에서는 D2D Efffect가 제공하는 기본 효과들 중, 아핀 변환 (Affine transformation)에 대해 알아보도록 하겠습니다. 이번 글은 지난 글에서 코드가 이어집니다. [Direct2D] Device context 사용하기 (ID2D1DeviceContext 2D affine transform effect - Win32 apps | Microsoft Learn 또한, 위 MSDN에 기반하여 작성되었습니다. 1. Effect 생성 / 초기화 더보기 D2D Effect는 Device context에 의해 초기화되며, 이 때 적용활 효과에 대한 ID를 사용합니다. 아핀 변환은 다음과..