C++/미분류
-
[Direct2D] ID2D1Effect 사용하기C++/미분류 2024. 4. 5. 15:15
이전 글에서, Render target을 Device context로 변경해보았습니다. Device context 사용하기 (ID2D1DeviceContext) 이전 글에서 소개한 Device context를 사용했을 때의 장점으로 D2D Effect객체를 이용할 수 있다는 점이 있었습니다. D2D Effect객체는 이미지를 여러 방법으로 처리할 수 있는 객체입니다. 이번 글에서는 D2D Effect객체를 생성하고, 출력하는 등의 기본적인 구성에 대해 알아보도록 하겠습니다. 0. 제공되는 효과 더보기 D2D Effect를 통해 적용할 수 있는 효과 중 일부는 다음과 같습니다 색조 변경 (톤 변경, RGB 변환 등) 흐림 효과 (가우시안 블러 등) 변환 (아핀 변환, 자르기, 회전 등) 크로마 키 이는 제..
-
[Direct2D] Device context 사용하기 (ID2D1DeviceContext)C++/미분류 2024. 3. 29. 17:40
이전 글 까지 Direct2D의 렌더링에 Render target을 사용했습니다. [Direct2D] 비트맵 이미지 그리기 정확히는 ID2D1HwndRenderTarget객체를 사용했습니다. 이 객체는 ID2D1RenderTarget의 하위 객체입니다. Microsoft는 Windows8발매 이후, 새 렌더링 API를 소개했습니다. How to render by using a Direct2D device context - Win32 apps | Microsoft Learn 제목에도 있는 Device Context가 그것으로, 이 객체도 ID2D1RenderTarget의 하위 객체입니다. Micorosoft는 Device context를 사용하면 얻을 수 있는 이점을 다음과 같이 소개하고 있습니다. Win..
-
[DirectX] 스마트 포인터 ComPtrC++/미분류 2024. 3. 21. 16:20
스마트 포인터는 포인터를 래핑하여, 자원의 누수를 최소화 하는 것에 목적을 둔 객체입니다.C++에서 기본적으로 제공하는 스마트 포인터에 관한 글은 아래의 다른 글을 참조해주세요.[Effective Modern C++] Smart pointer : std::unique_ptr [Effective Modern C++] Smart pointer : std::shared_ptr [Effective Modern C++] Smart pointer : std::weak_ptr [Effective Modern C++] Smart pointer : std::make_unique, std::make_sharedDirectX의 COM객체들은 위 스마트 포인터가 아닌, COM 인터페이스를 위한 스마트 포인터를 사용할 수 있습..
-
[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 더보기 각각 키 입력이 발생했을 때, 해제되었을 때 전달되는 메시지 입니다. 윈도우 프로시저에서 다음과 같은 방법으로 처리가..