분류 전체보기
-
[Direct2D] 비트맵 이미지 움직이기 (2)C++/미분류 2024. 3. 13. 14:59
지지난글에서 DirectX와 WIP로 이미지를 출력하는 방법을 알아보았습니다. [Direct2D] 비트맵 이미지 그리기 [Direct2D] 움직이는 비트맵 이미지 그리기 그리고 지난 글에서, 출력한 이미지의 위치값을 변화시켜 움직이는 방법을 알아보았습니다. [Direct2D] 비트맵 이미지 움직이기 (1) 이번 글에서는 특정 값이 아닌, 사용자의 입력(이번 글에서는 방향키)으로 이미지를 움직여보도록 하겠습니다. 이번 글의 코드는 지난 글에서 일부 이어집니다. 0. MyBitmap 기능 추가 (이미지 크기 조정) 더보기 이번 글에서 사용될 이미지가 윈도우 사이즈에 비해 큰 관계로, MyBitmap에 이미지 크기를 조정하는 기능을 추가하도록 하겠습니다. class MyBitmap { public: void ..
-
[Direct2D] 비트맵 이미지 움직이기 (1)C++/미분류 2024. 3. 10. 15:59
지난 글에서 DirectX와 WIP로 이미지를 출력하는 방법을 알아보았습니다. [Direct2D] 비트맵 이미지 그리기 [Direct2D] 움직이는 비트맵 이미지 그리기 이번 글에서는 위와 같이 출력할 수 있는 이미지가 있을 때, 이미지를 이동시키는 방법에 대해 알아보도록 하겠습니다. 이번 글은 지난 글에서 코드가 이어집니다. 1. 아이디어 더보기 게임 뿐만 아니라, 화면 속 움직이는 대부분의 매체들은 정적인 이미지의 연속된 출력입니다. 정적인 이미지가 출력될 때 이전 이미지에서 변화를 주는 것으로 움직이는 것 처럼 보이게 할 수 있습니다. WinAPI는 매 프레임마다 WM_PAINT메시지가 전송되고, 우리 코드에서는 그 때마다 OnRender함수를 호출합니다. 그러므로, OnRender함수에서 이미지의..
-
[Direct2D] 움직이는 비트맵 이미지 그리기C++/미분류 2024. 2. 28. 15:03
이전 글 ([Direct2D] 비트맵 이미지 그리기)에서 윈도우에 비트맵 이미지를 그리는 방법을 알아보았습니다. 이번 글에서는 지난 글의 내용을 확장하여, 움직이는 이미지를 윈도우에 그리는 방법을 살펴보도록 하겠습니다. 이번 글은 이전 글 ([Direct2D] 비트맵 이미지 그리기)의 코드가 일부 이어집니다. 0. 개요 이번 글의 움직이는 이미지는 이전 글과 동일하게 D2D의 Bitmap 객체를 이용합니다. 프레임의 경과에 따라 출력되는 Bitmap 객체가 달라지며, 이 객체들을 gif형식의 파일을 통해 초기화하기 때문에, Bitmap 객체를 배열 등의 컨테이너를 통해 취합할 필요가 있습니다. 1. 클래스 추가 (MyBitmap) 더보기 개요에서 언급한 Bitmap객체의 배열과 움직이는 이미지의 정보를 ..
-
[Direct2D] 비트맵 이미지 그리기C++/미분류 2024. 2. 26. 17:52
지난 글 ([Direct2D] 도형 그려보기)를 통해 윈도우에 도형을 그려보았습니다. 특정 컨텐츠를 표현하고자 할 때, 이와 같은 방법으로는 섬세한 표현에 어려움이 있습니다. 비트맵은 2D 그래픽 프로그램에서 컨텐츠를 표현하는 효과적인 방법 중 하나입니다. 이번 글에서는 png, jpg등 이미지 파일을 읽어와 윈도우에 표시하는 방법을 살펴보도록 하겠습니다. 이번 글은 지난 글 ([WinAPI] 키보드 입력)에서 코드가 이어집니다. 0. 시작하기 전에 (COM Initialize) 더보기 COM이란 Component Object Model의 약어로, Microsoft에서 개발한 컴포넌트 모델입니다. 서로 다른 환경, 프로그래밍 언어 간의 상호작용이 가능하게 하는 인터페이스를 제공하는 기술로, 여러가지 라이..
-
[WinAPI] 키보드 입력 (WM_KEYDOWN, WM_KEYUP, GetAsyncKeyState)C++/미분류 2024. 2. 23. 14:56
Windows프로그램 개발 시, 키보드 입력을 처리하는 방법은 상황에 따라 여러 함수를 이용하는 것으로 나뉘게 됩니다. 이와 관련한 방법들이 MSDN에 소개되어 있습니다. Keyboard Input - Win32 apps | Microsoft Learn 이번 글에서는 여러 방법 중 Windows 메시지의 KEYDOWN, KEYUP 메시지를 처리하는 방법과, GetAsyncKeyState함수를 이용하는 방법을 살펴보도록 하겠습니다. 이번 글은 이전 글([WinAPI] 로그 출력하기 (Console, TRACE))의 예제를 활용하고 있습니다. 1. WM_KEYDOWN, WM_KEYUP 더보기 각각 키 입력이 발생했을 때, 해제되었을 때 전달되는 메시지 입니다. 윈도우 프로시저에서 다음과 같은 방법으로 처리가..
-
[DirectX] QPC로 FPS(프레임 레이트) 구현하기C++/미분류 2024. 2. 20. 16:06
QPC란 Query Performance Counter로, Windows에서 사용되는 시간 측정을 위한 기능입니다. 이번 글에서는 QPC를 이용해서 함수의 호출 주기를 구하는 방법을 살펴보고, 프레임마다 호출되는 함수에 이 방법을 적용하여 FPS를 구해보도록 하겠습니다. 이번 글은 이전 글의 코드([WinAPI] 로그 출력하기 (Console, TRACE))의 예제를 기반으로 작성되었습니다. 1. 살펴보기 WinAPI를 이용한 이전 프로젝트는 화면을 그리기 위해 OnRender함수를 매 프레임마다 호출합니다. 따라서, 매 프레임마다 호출되는 OnRender함수의 호출 주기를 알 수 있다면, 프레임 레이트를 구할 수 있습니다. 2. QPC 사용하기 더보기 QPC에서 주로 사용되는 함수는 다음과 같습니다. ..
-
[WinAPI] 로그 출력하기 (Console, TRACE)C++/미분류 2024. 2. 16. 16:25
로그는 프로그램의 상태를 확인할 때 사용하는 가장 직관적인 방법 중 하나입니다. WinAPI는 자체적인 로그를 출력하는 기능을 제공하지 않기 때문에, 로그를 출력할 방법이 필요합니다. 이번 글에서는 로그를 출력하는 여러 방법 중, Console창을 추가로 띄우는 방법과 MFC에서 사용하는 방법을 살펴보도록 하겠습니다. 이번 글은 Visual Studio 2022환경에서 작성되었습니다. 0. 시작하기 전에 더보기 이번 글은 프로그램 실행 환경을 디버그와 릴리즈 두 가지를 번갈아 가며 확인할 예정입니다. 따라서, 디버그와 릴리즈 환경에서의 진입점 및 라이브러리 의존성을 동일하게 할 필요가 있습니다. 프로젝트 우클릭 후 Properties로 진입합니다. 진입한 Property Page의 Configuratio..
-
[Direct2D] 도형 그려보기C++/미분류 2024. 2. 8. 17:53
지난 글 (Windows application 만들기)에서 WinAPI를 이용해 빈 윈도우를 만드는 방법을 알아봤습니다. 이번 글에서는 위 글의 내용에 이어, 빈 윈도우에 Direct2D(이하 D2D)로 도형을 그려보도록 하겠습니다. 이번 글은 MSDN을 참고하여 작성되었습니다. 간단한 Direct2D 애플리케이션 만들기 : Microsoft Learn 0. 라이브러리 추가 더보기 Direct2D 라이브러리를 추가하는 작업이 선행되어야 합니다. 프로젝트 우클릭, Properties로 진입합니다. Properties의 Linker->Input 항목의 Additional Dependencies에 다음과 같이 라이브러리를 추가합니다. 추가되는 항목은 다음과 같습니다. d2d1.lib dwrite.lib Win..