WINDOWS 5

윈도우 핸들 (Windows Handle Object)

핸들이란 무엇일까? 우리가 흔히 핸들이라고 하면 자동차의 핸들을 떠올리기 마련이다.자동차 바퀴의 방향을 제어하기 위해 이 핸들을 사용하게 된다. 갖다 붙이기 나름이지만,윈도우의 핸들이 바로 이 자동차의 핸들과 유사하다. 좌회전을 한다고 가정하면운전자는 바퀴를 움직이다가 직접 손으로 바퀴를 돌리지 않고핸들이라는 조향 장치를 이용해 간접적으로 바퀴의 방향을 제어하게 된다. 마찬가지로 윈도우의 핸들도커널 오브젝트(혹은 GDI, 사용자 오브젝트)를 사용하기 위해필요한 하나의 장치라고 보면 된다. 프로세스가 초기화되면 운영체제는프로세스가 커널 오브젝트를 사용할 수 있게 하려고핸들 테이블을 할당하게 된다.(GDI, User 오브젝트는 핸들 테이블을 할당하지 않는다.고유 핸들 값만 받아서 바로 사용한다.) 핸들 테이..

WINDOWS 2024.05.24

C++/WinRT를 통한 동시성 및 비동기 작업

C++/WinRT를 통한 동시성 및 비동기 작업 이 게시글의 내용비동기 작업 및 Windows 런타임 "비동기" 함수호출 스레드 차단코루틴 작성Windows 런타임 형식을 비동기식으로 반환 해당 게시글의 내용 중에서 중요하게 볼 것 이 항목에서는 코루틴 및 co_await 의 개념을 소개하며,UI 및 비 UI 애플리케이션 모두에서 사용하는 것이 좋다.간단히 하기 위해서는 이 소개 항목의 코드 예제에서는 대부분Windows 콘솔 애플리케이션 (C++/WinRT)프로젝트를 보여준다.이 항목의 뒷부분에 나오는 코드 예제에서는 코루틴을 사용하지만,편의상 콘솔 애플리케이션 예제에서 종료 직전에 차단 get함수 호출도 사용하므로출력 인쇄를 마치기 전에 애플리케이션이 종료되지 않는다.UI 스레드에서 이 작업 (차단 ..

WINDOWS/C++ - WinRT 2024.05.23

HLSL 의 개요

왜 HLSL를 배우는가? 이유는 유니티 홈페이지를 구경하다가 해당 구문을 찾았다. 유니티는 왜 HLSL을 쓸까? 고민했는데 간단하다. DX를 쓰니, HLSL로 셰이더를 짠 것이다. 그럼 만약 회사에 들어가서 그래픽스에 관련된 작업을 해야할 때, HLSL을 써야할 일이 생길 수도 있다는 생각이 들었고, 게임업계 관련 채용 공고를 찾아보니 HLSL을 사용한다고 써져있었기에 배운다. 본론 게임 개발자가 되기 위해서는 특화된 여러가지 기술을 요한다. 대규모 멀티 프로그래밍, 그래픽 API, Direct3D는 렌더링 파이프라인을 사용하여 기본 요소를 그리거나 컴퓨팅 셰이더를 사용하여 병렬 작업을 수행하기 위한 하위 수준 API이다. Direct3D 12 API를 사용하려면 D3d12.h를 포함하고, D3d12.l..

WIN API (1)

WIN API int APIENTRY wWinMain(_In_ HINSTANCE hInstance, _In_opt_ HINSTANCE hPrevInstance, _In_ LPWSTR lpCmdLine, _In_ int nCmdShow) { MyRegisterClass(hInstance); WIN API에서 _IN_ 은 필수적으로 필요로 하는 매개변수로, _IN_은 우리가 수정할 수 없는 매개변수로 0값을 절대적으로 들어오지 못하게 만든다. 만약 0값이 들어오게 되면 프로그램은 폭파된다. hlnstance = 게임의 주소값이 들어가는 자리이다. nCmdShow = 작업 관리자나 아래에는 창이 들어와있지만 보여주지 않을 것이냐 보여줄 것이냐 하는 역할을 담당한다. MyRegisterClass(hlnstanc..

WINDOWS 2023.02.13