전체 글 219

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

오늘 api환경에 directX를 옮기는 작업을 하였다. 실행 파일과 리소스 경로 설정 정리C++ 프로젝트에서 실행 파일(EXE)이 데이터를 찾을 때 EXE가 포함된 디렉터리를 기준으로 탐색한다즉, 실행 파일과 리소스 파일(예: 이미지, 사운드, 설정 파일 등)이 같은 폴더에 있어야 정상적으로 로드된다 실행 방식에 따른 리소스 경로 차이Ctrl + F5 (독립 실행)실행 중인 EXE 파일이 있는 디렉터리에서 데이터를 찾는다그러나 리소스 파일은 Visual Studio 내부의 경로를 참조할 수도 있어 불일치 문제가 발생할 수 있음.EXE 파일을 직접 실행 (더블 클릭)실행 파일과 동일한 폴더에 있는 리소스를 정상적으로 로드함따라서 최종적으로 배포할 때는 EXE와 리소스를 같은 디렉터리에 두어야 함 리소스 ..

C++ 2025.02.10

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

오늘은 API에 DirectX 적용하는 법에 대한 수업을 들었다. 버텍스와 노멀 벡터버텍스 개수가 24개인 이유 ( DirectX11 Tutorial6 )조명 처리를 위해 하나의 점(버텍스)당 하나의 법선 벡터(Normal Vector)를 가져야 함하나의 점이 여러 방향을 가질 수 없으므로, 같은 위치에 여러 개의 버텍스를 배치하여 각기 다른 방향을 설정함버텍스 셰이더의 역할빛이 반사되는 방향을 계산하여 조명 효과를 적용함UV 좌표개념3D 모델에 텍스처를 매핑하기 위한 2D 좌표계를 의미최소 좌표는 (0,0), 최대 좌표는 (1,1)로 정규화됨0보다 작거나 1보다 크면 텍스처가 반복됨 (타일링 효과)활용개체에 이미지를 씌울 때, 해당 이미지의 크기로 나눈 비율을 UV 좌표(0~1)에 대입하여 매핑폴리곤의..

C++ 2025.02.07

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

오늘은 행렬 회전, 이동, 결합 에 대한 수업을 들었다. 행렬의 이동, 확대/축소, 회전#include #include #include #include #include #include void printVector(CXMVECTOR v);int main(){ XMMATRIX Mat{}; XMVECTOR V{}; XMVECTOR R{}; Mat = XMMatrixIdentity(); V.m128_f32[0] = 5.0f; Mat = XMMatrixTranslation(1.0f, 1.0f, 1.0f); R = XMVector3TransformCoord(V, Mat); printVector(R); Mat = XMMatrixScaling(2.0f, 1.0f, 1.0f); R = XMVector3Transform..

C++ 2025.02.05

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

오늘은 백터와 행렬에 대한 이론 수업을 들었다. 벡터(Vector)의 개념과 활용벡터는 방향과 크기를 가지는 수학적 개념으로, 게임 및 물리 시뮬레이션에서 객체의 이동 및 회전에 사용된다 벡터의 개념벡터의 기본 정의벡터(Vector): 방향과 크기를 가지는 값스칼라(Scalar): 크기만 존재하는 값벡터의 활용좌표 이동: 벡터는 점(Point)의 위치를 이동시키기 위해 사용된다예: 어떤 점 P(x, y)에 벡터 V(dx, dy)를 더하면 새로운 위치 P' = (x + dx, y + dy)가 된다즉, 벡터의 적용은 덧셈으로 이루어지며, 미래의 위치를 예측하는 데 사용된다게임에서의 시간 개념게임에서는 벡터를 적용할 때 프레임 단위로 계산하지만, 실제 물리 계산에서는 시간(Δt, Delta Time)을 고려하..

C++ 2025.02.04

[강의] 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

그리픽 랜더링 파이프라인

파이프 라인이란?여러 명령어가 중첩되어서 프로그램이나 하나의 작업을 실행하게 도와주는 과정( 연산들의 집합 )이다.한 사이클 안에 들어가야 해서 과정들이 많기 떄문에 한사이클이 복잡해지거나 사용자 입장에서 어려워질수 있는 단점이 존재한다. Input Assembler3차원 모델 하나를 3차원 세상에 나타내기 위해서는 가장 먼저 해줘야 할것은 무엇인가?여기서 모델은 점(vertex)로 이루어져 있다. 이것을 우리는 폴리곤(점들의 집합)이라고 한다.주로 게임에서는 삼각형을 가지고 3D 폴리곤을 정의하는데, 이때 이 정점데이터들을 운반하는 자료구조를 우리는 Vertex Buffer라고 한다 GPU 컴퓨터 시스템에서, 그래픽 연산을 빠르게 처리하여 결과값을 모니터에 출력하는 연산 장치 CPU 컴퓨터의 운영 체제..

게임 관련 2025.02.02

[강의] 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