기본 문법 [return 자료형] [함수명] (함수 인자) void func(int a, int b) { // 구현 } 동작 원리 #include int func(); // 함수 프로토타입 int main() { int nData{}; nData = func(); // 1. func 자리에 int 임시 변수가 생김 printf("%d\n", nData); } int func() { return 100; // 2. return 값을 복사해서 임시 변수에 저장 } 예시 2개의 수를 입력받아서 더하는 함수를 만들어보자. 여러가지 방법으로 함수 모양을 만들 수 있다. 1. return을 이용해서 결과값을 받는 방법 #include int add(int nData1, int nData2); int main() {..
기타
기본 문법 int nData{}; int *p{}; p = &nData; // p는 nData의 주소를 가리킨다. *p = 100; // p가 가리키는 곳에 100을 대입한다. printf("%d\n", nData); // 100 출력 쉽게 이해하기 아래의 예시처럼 바탕화면의 바로가기를 생각하면 포인터를 쉽게 이해할 수 있다. int nData{}; // 실행 파일 int *p{}; // 바로가기 생성 (비어있음) p = &nData; // 바로가기에 실행 파일 경로를 입력 *p = 100; // 바로가기를 통해 실행 파일 경로에 접근 printf("%d\n", nData); // 100 출력 배열을 가리키는 포인터 int arData[5]{ 5,4,3,2,1 }; int *p{}; p = arData;..
기본 문법 int arData[10]; // 자료형 변수명[배열크기]; java, c# 처럼 int[10] arData; 였으면 자료형을 알아보는 것이 더 편했겠다. 옛날 언어라서 그런가보다. 참고 사항 1. 개수가 명확할 땐 배열을 쓴다. 2. 배열을 늘리거나 줄이지 말자. 배열이 5칸인데, 7칸으로 늘린다 치면 메모리에서는 2칸을 늘리는 게 아니라 7칸짜리를 새로 만들고, 복사하는 것이다. 5칸짜리는 삭제함. (속도가 느림) 늘리거나 줄일거면 배열말고 다른 거 쓰자. 3. 배열 인덱스 변수를 선언했을 때, -1로 초기화 하지말자. 잘못된 메모리에 접근할 수 있다. (버그 가능성) 초기화는 0으로 하고, 배열의 0번째에는 디폴트 값을 넣어놓자. 가위바위보를 예시로 하면, 0 : 안 냄 1 : 가위 2 ..
3ds Max 공부를 안 할때마다 잊어버려서 그냥 자주쓰는 단축키들을 정리해놓으려고 한다. 3ds Max를 오랜만에 해서 단축키가 기억 안 날때마다 한번씩 읽으면 좋을 것 같다. (다른 사람들이 정리해놓은 단축키는 한번 보면 바로 잊어버린다... 내가 스스로 정리해보면 기억에 오래 남지않을까??) 툴 단축키 Q Select 모드 W 이동 모드 E Rotate 모드 R Scale 모드 G Grid 보이게 하기 J 바운딩 박스 보이게 하기 View 보기 F3 와이어프레임 (면은 투명하게 하고, 모서리만 보임) F4 모서리 보이게 하기 Alt + X 오브젝트가 반투명으로 보임 Alt + W View 창 확대 마우스 휠 클릭 (Top 뷰에서 잘 보이는 오브젝트들을 선택해놓고, Left 뷰에서 작업하고 싶을 때)..
https://answers.unity.com/questions/1668898/github-desktop-warning-lf-will-be-replaced-by-crlf.html Github Desktop "warning: LF will be replaced by CRLF" - Unity Answers answers.unity.com (에러 메세지가 복사가 안된다... ㅠㅠ) warning: CRLF will be replaced by LF in some/file.file. The file will have its original line endings in your working directory. 새로운 프로젝트를 시작하고, 깃허브에 Commit을 했는데 오류가 발생했다. 위의 게시글에 있는 방법처럼..
정리 1 게시글에서 렌더링 파이프라인이 보이지 않는 공간에 존재하는 오브젝트들이 2D 화면으로 그려지기까지의 과정이다. 라고 설명했는데, 이번 게시글에서는 이 과정을 풀어서 자세히 정리해보려고 한다. 헷갈리는 용어들 (드로우콜, 배칭, 레스터라이저, 컬링 등)에 대해서도 확실히 이해할 수 있을 것이다. 렌더링 파이프 라인 과정 Mesh의 Lifecycle을 기반으로 설명한다. 1. Mesh를 불러오고, 렌더링할 것을 요구한다. 게임(또는 어플)이 실행되면, 게임은 Mesh를 불러오는 것과 불러온 Mesh를 렌더링할 것을 요구한다. 2. Mesh를 Disk에서 RAM으로 불러온다. Disk일 때는 .obj, .fbx 등이지만, RAM으로 Load하는 과정에서 메쉬 정보로 바뀐다. RAM은 버텍스 위치의 정..
렌더링 기법 정리하는 겸해서 렌더링 기법에 대해 더 알아보았는데, 설명이 잘 되어있다. https://www.slideshare.net/agebreak/ndc11-deferred-shading | 포워드 렌더링 Single-pass - 해당 라이트에 영향을 받지 않아도 라이트 연산. - 화면에 렌더링 되지 않는 면(Culling)도 셰이팅 연산을 해야만 한다. - 멀티 라이트 상황에서 관리가 어렵다. - 그림자와의 통합이 어렵다. 예시) 1억 개의 오브젝트, 50개의 라이트 라이팅만을 위한 계산양 : 1억 * 50 Multi-pass - 화면에 렌더링 되지 않는 면(Culling)도 셰이팅 연산을 해야만 한다. - 높은 배치 카운트 ( 1 / object / light ) // 배치를 잘 몰라서 이해가 ..