전체 글 (110) 썸네일형 리스트형 Push_back && emplace_back 이번엔 Push_back && emplace_back의 쓰임새와 차이점에대해서 알아보고자 한다. 시작하기에 앞서 결론부터 말하자면 push_back은 1) 객체를 삽입하기 위해서 똑같은 임시 객체를 하나 더 만들어서 거기에 복사한 다음 벡터에 삽입 2) 삽입이 끝나면 임시 객체 파괴 3) 잠깐 쓰고 버릴 메모리를 할당해준다. 3) 임시 객체 생성자를 호출해서 생성하고 소멸자를 불러서 파괴시키는 과정에서 불필요한 연산이 생긴다 => 다소 비효율적, 속도느림 emplace_back은 1) 가변인자 템플릿을 사용해서 삽입하려는 자료형에 따라 함수 내에서 삽입을 위한 객체를 자체 생성한다. 즉! 똑같은 임시 객체를 만들 필요가 없다 2) 파괴해야 할 임시 객체 자체가 생기지 않는다 3) 잠깐 쓰고 버릴 메모리를.. 생성형 ai를 통해 이미지 하나로 게임이 만들어 졌다. ai의 발전이 그림을 넘어서 이제 '이미지 1장'만 있으면 '게임'이 만들어집니다. 구글 딥마인드에서 Genie라는 AI를 공개하였는데 20만 시간 이상의 게임 영상으로 학습하여 단 한개의 이미지만으로 플레이 가능한 게임 생성할 수 있게 되었다고 한다. https://sites.google.com/view/genie-2024 🧞 Genie: Generative Interactive Environments A Foundation Model for Playable Worlds sites.google.com 관련논문 https://arxiv.org/abs/2402.15391 Genie: Generative Interactive Environments We introduce Genie, the first gen.. 업캐스팅 &&다운캐스팅 더보기 HTML 삽입 미리보기할 수 없는 소스 참조한 사이트 c++에서 자주 쓰이고 아주 유용한 두가지 캐스팅에 대해서 공부해보자. 업캐스팅 우선 업캐스팅이란 부모클래스의 자식클래스의 객체를 부모클래스의 포인터로 가리킬때 일어난다. 업캐스팅을 통해 자식클래스를 부모클래스의 객체처럼 다룰 수 있게 해주어야할 때 사용한다. 즉 코드의 재 사용성을 높이기 위해서 사용해준다고 할 수 있다. 하지만 업캐스팅을 하면 기본클래스에 정의된 멤버(함수)만 호출할 수 있기 떄문에 파생클래스의 고유 함수는 사용할 수 가 없게 된다. 이때 다시 다운캐스팅의 과정을 통해 본래 함수를 사용하게 해주어야한다. Parents* parents = new Child; 또한 업캐스팅의 경우에는 명시적인 형변환이 필요하지 않지만 다운캐스팅.. 객체지향(C++)과 절차지향(C)의 차이 이번에는 C++에서 가장 중요한 내용인 객체지향에 대해 알아보고자 합니다. C언어(절차지향언어) 와 C++(객체지향언어)의 차이에 대해서도 알아보자. 우선 절차지향언어를 사용하는 프로그래밍 즉! 절차지향프로그래밍이란 순서대로 실행하는 프로그래밍이다. 우리가 썻던 C언어 코드를 보면 위에서 아래로 흐르듯이 코드가 실행이되는것을 알 수 있다. 이에 따른 장점은 실행속도가 빠르다는것이고 단점은 유지보수가 어렵다는 점이 있다. 반면 객체지향언어를 사용하는 프로그래밍은 여러가지로 세분화되어있는 여러가지 용도의 함수들을 사용하여 하나의 큰 형태를 만드는것이다. 예를들어 객체지향프로그래밍은 요리라고 할 수 있다. 여러가지 요리들을 만들수 있는 (1)다채로운 요리재료들 요리를 도와주는 (2)다양한 조리기구들( 냄비, .. NameSpace namespace란? 그동안 우리가 모르고 써왔던, 알긴알지만 애매하게 알았던 개념이었던 namespace가 무엇인지 공부해보자. 네임스페이스란 네이밍이 겹치는 현상을 방지하기위해서 만들어진 편의 기능이라고 할 수 있다. 우리가 흔히 사용하는 cin, cout의 기능또한 std라는 네임 스페이스 안에 들어가있는 편의기능인데 우리가 이를 사용하기 위해서 매번 std::cin , std::cout을 하는 번거러운 작업을 거쳐야하는데 이때 using 이라는 기능을 활용하여 한번만 선언해주면 그 다음은 생략해줄수 있다는 것이다. using namespace {사용할 편의기능} 예시를 들어보자면 #include int main() { std::cout 동적할당 , 정적할당 include int main(){ // 배열 선언(정적 배열 선언) int arr[5]; // 값 할당 예시 arr[0] = 1; arr[1] = 3; arr[2] = 5; } 위와 같이 처음에 5칸으로 배열의 크기를 지정하여 선언할때 컴파일 단계에서 자동으로 메모리를 할당해준다. 스택 영역에 메모리 공간을 배정받게 되어 고정된 칸 수만 가질 수 있다. (쉽게 생각하자면 스택 중간에서 갑자기 차지하는 공간을 늘리거나 줄이는 것이 쉬운 작업은 아니라는 점이다. 이렇게 배열 내 메모리를 할당받을 경우 장단점은 다음과 같다. 장점 : 사용하지 않는 메모리 해제를 자동으로 해주어 누수 걱정이 거의 없다. 단점 : 필요한 메모리 양을 잘못 계산하여 너무 크게 할당받으면 메모리 낭비가 생기고 너무 작게 할당받은 .. DirectX 11을 이용한 3D 게임 프로그래밍 입문_05 렌더링파이프라인 이번에 공부할 내용은 렌더링파이프라인이다. 렌더링 파이프라인은 3차원의 기하학적인 요소와 가상의 카메라의 위치및 방향이 주어졌을때, 현재 가상카메라에 비쳐진 3차원의 형태를 2차원의 이미지로 생성해주는 단계 전체를 의미한다. 렌더링 파이프라인을 이해하기 위해선 두가지 중요사항에대해 알아야하는데, 1) 2차원모니터 화면을 통해 3차원을 바라보고 있다고 생각하게끔 하는것 2) 색상을 수학적으로 코드안에서 다루는 것 이 두가지가 이에 속한다. 우선 3차원과 2차원의 가장큰 차이점은 깊이감이라고도 할 수 있다. 마치 지평선에있는 먼 산을 바라볼때 그 앞에 있는 물체가 있다면 겹쳐지는 부분에있는 산이 가려지며, 이 깊이에 따라 가장 가까운 물체가 보인 다는 현상이다. 또한 조명에 따라 평평하게 보이고, 3차원이 .. DirectX 11을 이용한 3D 게임 프로그래밍 입문_04 초기화 우선 Direct X는 9버젼부터 3D를 지원하기 시작했고 현재 12버젼까지 나왔다. 즉, 9~12버젼이 3D를 다룬다 할수 있다. Direct3D는 프로그램이 3차원 그래픽 가속 기능을 이용해서 3차원 세계를 렌더링할 수 있게 해준다. 본질적으로 Direct3D는 그래픽 하드웨어를 제어할 수 있는 소프트웨어라고 할 수 있다. 4.1.2 COM COM (component Object Model)은 DirectX의 프로그래밍 언어 독립성과 하위호환성을 가능하게하는 기술 COM 의 객체는 인터페이스라고도 할수있다. 프로그래머가 알아야할것은 필요한 COM 인터페이스의 포인터를 특별한 함수, 또 다른 COM 인터페이스의 메서드를 이용해서 얻는 방법뿐이라는것을 명심해야한다. COM의 인터페이스는 C++의 new .. 이전 1 ··· 10 11 12 13 14 다음