2024년 5월 28일 화요일

Directx11 Tutorial - 1

 기본 다지기로 처음부터 복습하여

내용을 정리해보도록 하였음




 특정 모델을 렌더링 하기 위해서는 여러 삼각형이 필요한데 

각 세모의 꼭짓점을 정점(Vertex)이라고 부름

모든 정점들은 정점 버퍼(Vertex Buffer)라는 배열에 들어가며

이를 GPU로 보내 모델을 렌더링하는 원리이다.


 

 

인덱스 버퍼 : Index Buffer

인덱스는 각 정점의 순서를 나타내는 숫자이다.

정점을 그리면 면이 생기는데

시계 방향으로 그려져야 앞면이 나오고 반대로 그리면 뒷면이 나오는데

 보통 앞면만 렌더링 하여 뒷면은 안보이므로 그리는 순서도 중요함

 그래도 따로 설정하여 뒷면도 그려지게 할 수 있음


 

요약) 그리는 순서에 따라 앞면과 뒷면이 정해짐


 

픽셀 쉐이더 : Pixel Shader

픽셀의 색상을 정하는 프로그램이다.

GPU가 실행하며 색, 조명, 그림자 등을 처리한다.

 



정점 쉐이더 : Vertex Shader

정점 버퍼안의 정점들을 실제로 그리기 위한 프로그램이다.

이 또한 GPU가 실행하며 둘다 확장자명은 HLSL로

쉐이더 전용 언어(HLSL)를 사용하여 코딩한다.



 

DirectX를 사용하기 위해서 SDK를 설치 해주어야 하는데

윈8 부터 이미 기본적으로 다 깔려있다고 합니다.


그래도 따로 설치함으로써 DirectX Sample Browser를 사용가능한데

 

예제들 이것저것 다운받아서 코드 뜯어보고 하는것도 나쁘진 않음

    



일단은 간단하게 모델 하나를 렌더링하는 프로그램을 제작하기 위해서

빈 프로젝트를 하나 생성해준다.






프로젝트 속성 페이지에 들어가서

문자 집합을 유니코드로 변경



디렉터리 포함에서 $(DXSDK_DIR)\include 로 SDK를

프로젝트에 포함시켜준다.



라이브러리 디렉터리는 $(DXSDK_DIR)\Lib\x64 추가

$(...)은 매크로로 C:\같은 주소 대신 사용한다.

만약 #include로 불러올수가 없으면 실제 깔려있는 경로 

C:\Program Files (x86)\Microsoft DirectX SDK (June 2010)\Include를 추가해주어야 함





링커 - 하위 시스템 -> 창모드로 변경

콘솔창도 같이 띄우고 싶으면 main.cpp에 

#pragma comment(linker , "/entry:WinMainCRTStartup /subsystem:console")

를 추가해준다.


여기까지 하면 세팅 완료



댓글 없음:

댓글 쓰기

c++ thread.h

 c++에서 쓰레드 돌릴려면 thread.h 헤더를 쓰면 되는데 이 친구는 쓰레드가 아직 실행 중인지, 아니면 강제 종료하거나 하는 함수가 없어서 조금 아쉬운 애다. std::thread 는 로컬 변수로 선언하든 new 동적 할당을 하든 start 함...