C++ 120

[강의] 2월 3일 수업정리

DirectX11에 대한 수업을 들었다.  DirectX11 연동 방법DirectX 11을 일반 콘솔 프로젝트에서도 사용할 수 있도록 설정하려면 아래 단계를 따르면 된다. lib 폴더에는 d가 붙은 파일과 없는 파일이 존재한다. d가 붙은 파일: 디버그용 라이브러리d가 없는 파일: 릴리즈용 라이브러리디버그용 라이브러리는 개발 중에 사용하며, 배포 시에는 릴리즈용 라이브러리를 사용한다. ( 릴리즈용이 더 빠름 )  XMVECTOR 구조DirectX의 XMVECTOR는 __m128 타입으로 정의되어 있으며, 16바이트 단위로 정렬된다.typedef union __declspec(intrin_type) __declspec(align(16)) __m128 { float m128..

C++ 2025.02.03

[강의] 1월 31일 수업정리

오늘은 direct3d11 - tutorial2에 대한 수업을 들었다. 그래픽 메모리와 버퍼 개념 정리1. 그래픽 카드 메모리 vs 컴퓨터 램그래픽 카드 램: 읽는 속도는 빠르지만 쓰는 속도는 느림컴퓨터 램: 쓰는 속도는 빠르지만 읽는 속도는 느림그래픽 카드 램을 사용하는 이유는 그래픽 데이터는 읽어들이는 작업이 많기 때문 2. 버텍스 및 인덱스 버퍼 버텍스 버퍼 (Vertex Buffer)정점(버텍스) 정보를 저장하는 버퍼예: (0,0,0), (1,1,0) 등의 좌표를 저장하는 주머니인덱스 버퍼 (Index Buffer) 버텍스 버퍼의 정점들을 인덱싱하여 저장하는 버퍼정육면체를 그리는 과정버텍스 버퍼에 저장된 좌표들의 인덱스를 인덱스 버퍼를 통해 참조 → 삼각형 12개를 그려 정육면체 구성 3. HLS..

C++ 2025.01.31

[강의] 1월 24일 수업정리

컬링과 조명에 대한 수업을 들었다. 컬링 (Culling)컬링은 불필요한 렌더링 작업을 줄이기 위해 특정 오브젝트를 걸러내는 최적화 기법이다 프러스텀 컬링 (Frustum Culling)카메라 앵글 내에 포함되지 않는 오브젝트를 걸러내어 렌더링 성능을 최적화하는 기법이다시야각에서 벗어난 오브젝트뿐만 아니라, 카메라에 가깝거나 먼 오브젝트도 필터링한다핵심: 카메라 시야에 걸쳐 있는 오브젝트는 렌더링해야 한다오클루젼 컬링 (Occlusion Culling)다른 오브젝트에 의해 가려져서 보이지 않는 오브젝트를 렌더링 대상에서 제외하는 기법이 기법은 화면에 표시되지 않는 영역의 연산을 줄이는 데 유용하다백페이스 컬링 (Backface Culling)폴리곤의 방향에 따라 화면에 보이지 않는 면을 걸러내는 작업이다..

C++ 2025.01.24

[강의] 1월 23일 수업정리

다이렉트 3D와 연관된 암기사항에 대한 수업을 들었다.이 암기사항은 무조건 외우도록 하자  1. 더블 버퍼링더블 버퍼링은 컴퓨터 그래픽 및 사용자 인터페이스 디자인에서 화면 깜박임을 방지하고 시각적 성능을 개선하는 기술입니다 버퍼 구조전면 버퍼: 현재 화면에 표시되는 이미지 또는 프레임을 저장.후면 버퍼: 다음에 표시할 이미지를 업데이트 중인 버퍼.작동 원리후면 버퍼에서 이미지가 렌더링렌더링이 완료되면 전면 버퍼와 후면 버퍼를 교체새 전면 버퍼의 이미지가 화면에 표시이전 전면 버퍼는 다음 렌더링 주기의 후면 버퍼가 된다장점성능 향상: 화면 업데이트 시간을 단축하여 GUI 성능 개선깜박임 감소: 화면 깜박임을 최소화부드러운 애니메이션: 화면 업데이트가 매끄럽게 이루어짐단점복잡성 증가: 구현 코드가 복잡해질..

C++ 2025.01.23

[강의] 1월 21일 수업정리

오늘은 비트마스크를 이용한 마우스 X, Y값 출력과 API를 클래스화 시키는 부분에 대한 수업을 들었다. 1. 비트마스크를 이용한 마우스 X, Y값 출력LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam){ static int nPosX{}; static int nPosY{}; switch (message) { case WM_MOUSEMOVE: { nPosX = lParam & 0x0000ffff; nPosY = (lParam & 0xffff0000) >> 16; InvalidateRect(hWnd, nullptr, true); break; } case WM_KEYDOWN: { if (wP..

C++ 2025.01.21

[강의] 1월 20일 수업정리

오늘은 비트마스크에 대한 수업을 들었다. 1. 비트 마스크 정의 :비트마스크는 이진수를 사용하는 컴퓨터의 연산 방식을 이용해, 정수의 이진수 표현을 자료 구조로 쓰는 기법을 말한다.비트마스크를 통해 집합을 정수로 나타낼 수 있으며, 비트 1이면 켜져있다. 0이면 꺼져있다 라고 말한다.단, 이때 집합에 저장할 수 있는 수의 범위가 정해져 있어야 한다. 따라서 보통 0부터 N - 1까지 N개의 정수로 이루어진 집합을 나태낼 때 사용한다.즉, 2진수 기준으로 1은 구멍, 0은 벽으로 생각했을 때 특정 마스크를 씌웠을 때 원하는 값만 볼수 있게끔 하는 것이 비트 마스크이다. [ 통과 되는 부분 : 1, 통과 되지 않는 부분 : 0 ]1bytes == 8bit == 11111111( 8bit 2진수 ) ==  2..

C++ 2025.01.20

[강의] 1월 16일 수업정리

API에 대한 마지막 수업을 들었다. 메시지 루프HACCEL hAccelTable = LoadAccelerators(hInstance, MAKEINTRESOURCE(IDC_WINDOWSPROJECT1));MSG msg;while (GetMessage(&msg, nullptr, 0, 0)){ if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg)) { TranslateMessage(&msg); DispatchMessage(&msg); }}  GetMessage 메시지 큐에서 메시지를 하나씩 가져온다 ( 메시지 큐에 데이터 입력이 들어가면 루프가 돌면서 메시지를 하나씩 꺼내서 처리함 )메시지가 들어오지 않으면 대기 상태로 진..

C++ 2025.01.16

[강의] 1월 15일 수업정리

오늘도 API에 대한 수업을 들었다.  1. ATOM 및 MyRegisterClassATOM: 16비트 크기의 정수 값으로, 특정 데이터를 고유하게 식별할 수 있는 ID로 사용. 문자열을 고유 ID로 변환 가능MyRegisterClass 함수: 애플리케이션의 윈도우 클래스 정보를 등록ATOM MyRegisterClass(HINSTANCE hInstance){ WNDCLASSEXW wcex; // 윈도우 클래스 구조체 선언. wcex.cbSize = sizeof(WNDCLASSEX); // 구조체 크기를 설정. RegisterClassExW에서 구조체를 읽기 위해 필요. wcex.style = CS_HREDRAW | CS_VREDRAW; // 윈도우 스타일 지정. // ..

C++ 2025.01.16