프로그래밍에 대한 배경지식?들도 많이 설명을 해주신다.
C/C++/C#/JAVA 언어에 대해서
C#, JAVA도 어차피 C로 구현되어있다.
이해가 쉽게 만든 것인데, 그 대신 속도가 좀 느려진다.
기계랑 가까울 수록 속도가 빠르기 때문에, C가 제일 빠르다.
JAVA에서 JVM이 하는 일은 특정 운영체제를 타깃으로 하는 게 아니라, 다양한 운영체제를 지원한다.
JVM을 누군가가 작성해줬기 때문에, JAVA를 C보다 편하게 쓸 수 있는 것이다.
C#은 MS에서 MS.net을 만들었는데, Mono가 Ms에 맞서기 위해 개발되었다.
이후에 MS가 오픈소스화를 하면서 Mono의 개발을 양도받게 되었다.
유니티가 이 Mono를 쓰기 때문에, C#으로 개발한다.
방법론
애자일
주기적으로 끊임없이 프로토타입을 만들며 발전해가는 프로젝트.
딱딱한 계획에 문서를 작업해야 하는 시간을 낭비하지 않음.
린
린스타트업이라는 용어도 있다.
어디서 들었는 지 모르겠지만, 기억에 남는
'성공하지 못하는 스타트업들은 아무도 원하지 않는 서비스를 만들어낸다'는 말이 있다.
린 방법은 계속 고객과의 피드백을 통해 배우고 아이디어를 가치 있게 만들어가는 과정이다.
내가 이해한 내용으로는
아이디어를 만들고,
이 아이디어를 시장에서 가치있게 만들기 위해 (린 방법)을 채택.
가치가 높아진 아이디어로 프로젝트를 진행하면서 일정 주기마다 프로토타입을 개발하는 (애자일 방법)을 채택.
인 것 같다.
버퍼
1차원 배열.
프론트 버퍼, 백 버퍼를 예시로 들면, 화면을 그리기 때문에 FHD 기준으로 1920x1080 = 2,073,600 공간의 메모리 영역.
버퍼에는 다양한 정보들이 담긴다.
헤더 파일 (.h)
헤더 파일을 어렵게 생각하지 말자. 나만 어렵게 생각했나??
쉽게 생각해서 그냥 그 헤더 파일을 복사해서 붙여넣기 하는 것이다.
테스트 코드를 만들었다.
#include <iostream>
int main()
{
std::cout << "헤더 파일이 하는 일은 단순함." << std::endl;
}
그리고 } 하나만 존재하는 헤더파일을 만들었다.
// EndBrace.h 파일
}
이렇게 대입해도 오류 없이 작동한다.
헤더 파일은 그냥 복사해서 붙여 넣기 하는 작업만 할 뿐이다.
#include <iostream>
int main()
{
std::cout << "헤더 파일이 하는 일은 단순함." << std::endl;
#include "EndBrace.h"
Unity의 Fragment Shader, Unreal의 Pixel Shader
같은 픽셀 쉐이더인데, 명칭이 다르다.
OpenGL에서는 픽셀 쉐이더를 Fragment Shader라고 칭하고,
DirectX에서는 Pixel Shader라고 칭한다.
각 엔진의 렌더링 파이프라인 명칭을 보면,
Unity는 OpenGL을 이용했고, Unreal은 DirectX를 이용했다는 것을 유추할 수 있다.
Shader 파일 추가하기.
프로젝트 솔루션이 있는 파일에서 Shader 폴더를 생성한다.
텍스트 파일을 만들고, 파일명과 확장자를 수동으로 바꿔준다.
내용 잃어버릴 수 있다고 해도 무시해도 된다.
그리고 프로젝트에 드래그해서 추가.
쉐이더가 무슨 쉐이더인지 알려주어야 한다. 둘 다 해주자.
VS는 꼭짓점 셰이더, PS는 픽셸 셰이더로 바꾸었다.
나는 처음에 셰이더 형식이 4 버전쯤이었는데, 옛날 거라고 한다.
그래서 5로 바꾸었다.
컴파일은 이렇게 하면 된다.
컴파일되면 이진 코드로 바뀌는데, 그게 cso 확장자 파일이다.
근데 그냥 프로젝트 컴파일하면 쉐이더도 같이 컴파일됨.
속성에 일반 가면 설정할 수 있음. 기본은 같이 컴파일되는 것.
이렇게 설정한 속성은 VisualStudio에서 직접 컴파일할 때만 해당한다.
미리 컴파일해놓을 때 쓰면 되는 방식이었다.
나는 밑에 이미지처럼 코드에서 컴파일해서 사용할 것이기 때문에, 아까 설정한 속성이랑은 관련이 없다.
오늘 작성한 DirectX 코드는 깃허브에 올렸다.
설명은 나중에 봐도 이해할 수 있게 주석으로 작성했다. 그 대신 안 깔끔함.
https://github.com/mingyu243/STL_GraphicsEngine2/tree/07d353e4028d394174835ce4a21a03816e804ad0
'기타 > DirectX' 카테고리의 다른 글
[DirectX11] 6일차 (스마트 포인터로 바꾸기 / Vector 클래스 제작) (0) | 2021.02.22 |
---|---|
[DirectX11] 5일차 (삼각형 그리기 / 클래스 캡슐화) (0) | 2021.02.19 |
[DirectX11] 3일차 (DirectX 초기화하기) (0) | 2021.02.17 |
[DirectX11] 2일차 (깃 허브 사용해보기) (0) | 2021.02.16 |
[DirectX11] 1일차 (윈도우 창 띄우기) (4) | 2021.02.15 |