2020 이전/이것저것 17

한줄설명

컴파일: 코드를 실행할 수 있는 바이너리 코드로 변환해주는 작업. 컴파일타임에 일어나는일:1. 전처리기(#을 처리해준다. 실제 바이너리 코드로 변환될 코드들을 걸러주는 등의 작업 수행)2. 컴파일(코드를 어셈블리 코드로 변환한다)3. 어셈블(어셈블리 코드를 목적코드로 변환한다)4. 링크(목적코드들을 링크한다) explicit: 암시적인 타입변환을 막는 C++의 키워드 BSS, DATA: 분리한 이유, data영역의 초기화된 변수의 초기 값들은 초기화 값을 기억해야하기 때문에 object파일 안에 저장을 하고있다. 초기화를 해주지 않은 변수는 object파일에 들어갈 필요가 없고 그런 변수의 개수가 몇개인지만 기억한다. 오브젝트 파일이 실행파일이 되고 실행시켜 메모리에 올라가 프로그램이 되면, 초기화가 되..

드로우 콜과 텍스처 아틀라스와 배치와 인스턴싱

1. 드로우 콜draw call: CPU가 OpenGL이나 DirectX의 함수를 호출하여 GPU에게 그리기(draw call)을 요청하는 것. 그래픽 API의 모든 드로우콜은 CPU상의 상당한 퍼포먼스 오버헤드를 일으킨다. draw call을 줄이기 위해 게임 엔진은 batch기술을 제공한다. batch object를 만들고, 그 객체의 자식으로 이미지 스프라이트 컴포넌트를 가진 오브젝트를 생성하면 batch object를 생성하는것이기 때문에 드로우 콜은 1번만 호출된다. 드로우콜 발생조건 위 그림 기준으로 1. 메쉬가 여러개인 경우(3번)2. 마테리얼이 여러개(마테리얼만 2번: 얼굴마테리얼, 눈 마테리얼)3. Shader에 의한 경우(2-pass, 외곽선 그릴때 검은색 단색으로 한번 그리고, 나중에..

xml & json

John Doe Anna Smith Peter Jones 장점: 작성하기 편하다(tag), 사람이 읽기 쉽고 DTD 등 XML의 기능을 확장할 여지가 있다.단점: tag때문에 배열형식이나 반복구조일 경우 불필요한 데이터가 계속 나타나서 길이가 길다. 텍스트의 길이가 길어서 파싱이 힘들어지고 속도가 느려진다. {"employees":[ { "firstName":"John", "lastName":"Doe" }, { "firstName":"Anna", "lastName":"Smith" }, { "firstName":"Peter", "lastName":"Jones" } ]} 장점: 내용이 함축적으로 최소한의 정보를 가지고있다. XML대비 용량이 적다.객체({ })와 배열([ ])의 적절한 만남으로 효율적인 데이..

Coroutine

코루틴은 비선점형 멀티태스킹을 위해 서브루틴을 일반화한 프로그램 요소입니다. 보통의 함수가 return 되는것에 비해 코루틴은 suspend로 잠시 자신의 작업을 홀드하고 다시 작업이 재개할 수 있으며 이를 위해 다수의 진입 포인트를 허용합니다. 멀티스레드 vs 코루틴:코루틴은 쓰레드가 아니므로 비동기가 아닙니다(동시에 실행되지 않는다). 코루틴은 공유 메모리영역, 공유 자원을 읽거나 변경시키지 않습니다. 유니티에서의 코루틴: 닷넷은 멀티쓰레드를 지원하지만 유니티는 단일 쓰레드로 동작한다. 멀티 스레드를 사용할 경우 교착 상태 경합 등 신경써야할 부분이 많아진다. 코루틴은 스레드를 사용하지 않고 멀티 태스킹을 가능하게 한다. 유니티에서의 Update함수는 1프레임에 한번 호출되는데 매 프레임마다 yiel..

RTTI(Run-Time Type Information)

C++ 표준 라이브러리 : https://www.ibm.com/support/knowledgecenter/en/SSPSQF_9.0.0/com.ibm.xlcpp111.aix.doc/standlib/header_files.html 항상 모든 개념들은 사전적인 의미, 키워드 예시, 경험으로 설명할 수 있어야한다. RTTI는 런타임 타입 인포메이션의 약자로 프로그램 실행 중에 객체의 type이 결정될 수 있도록 하는 메커니즘이며 적어도 한개의 virtual function을 가지고있는 클래스에서만 유효합니다. RTTI에는 세 가지 C++ 언어 요소가 있습니다. dynamic_cast 연산자, typeid 연산자, type_info 클래스가 바로 그것입니다. Dynamic cast는 클래스 hierarchy에서 ..