일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 유니크포인터
- 멀티쓰레드
- 디자인패턴
- material
- 옵저버
- EFFECTIVE C++
- 멀티코어 프로그래밍
- Atomic
- C
- Unreal
- c++
- 쓰레드
- Design Pattern
- observer pattern
- 멀티코어
- 스마트포인터
- sequential
- 한국산업기술대학교
- 옵저버 패턴
- multi-core
- 게임공학과
- MultiCore
- random access
- vector
- 메모리관리
- 프레임워크
- thread
- stl
- 복사생성자
- Multithread
- Today
- Total
목록분류 전체보기 (57)
태크놀로지
한국산업기술대학교 게임공학부 정내훈 교수님 멀티코어 1주차 강의 멀티 쓰레드 프로그래밍 멀티 쓰레드의 사용목적 멀티코어 CPU(or 멀티 CPU)에서의 프로그램 성능향상 (O) 성능향상이 없다면 의미가 없다. 분산 컴퓨터에서의 프로그램 성능향상 (X) 멀티쓰레드는 하나의 프로세스에서 동작하기 때문에 분산 컴퓨터에서 성능향상을 위해선 멀티프로세스를 통해 싱글코어(CPU) 컴퓨터 환경에서의 프로그램 성능향상 (X) 오히려 더 느려짐 프로그램을 모듈화해서 알아보기 쉽게 (X) 디버깅이 매우 어려움 멀티코어 프로그래밍 => 병렬컴퓨터에서의 프로그램 성능향상 멀티코어 프로세서 Intel과 ARM에서 멀티 코어 프로세서를 만드는 이유 CPU의 성능을 올려야 한다. 클럭 속도를 높일 수 없다. -> 발열문제 클럭 속..
가상클래스 씬 설계 /* Scenes @ 그릴 오브젝트들이 무엇인지를 설계한다. @ 오브젝트 생성 및 배치 */ class Scene abstract { protected: friend class SceneManager; virtual void ProcessEvent(int sEvent, int argsCount = 0, ...) {}; virtual void UIEvent(int sEvent, int argsCount = 0, ...) {}; public: Scene(); virtual ~Scene(); virtual void Initialize() = 0; virtual void OnResize() = 0; public: virtual boolEnter() = 0; virtual voidExit() ..
싱글턴 패턴이란? 오직 한개의 클래스 인스턴스만을 갖도록 보장하고, 이에 대한 전역적인 접근점을 제공합니다. 즉 어플리케이션이 작동하는동안 딱 한번만 생성되고, 어디서나 클래스에 접근할 수 있어 static의 분위기를 갖고 있습니다. 싱글턴을 왜 사용하는가? 어디서나 접근할 수 있다는 가장 큰 장점을 갖고 있는동시에, 인스턴스를 여러개 만들수도 없기 때문에 메모리 낭비에 대한 걱정이 줄어든다. 또한 싱글턴은 처음 사용될때 초기화되므로, 게임 내에서 전혀 사용되지 않는다면 아예 초기화 되지 않는다. 싱글턴의 문제점 게임이 복잡해지면서 싱글턴을 많이 사용하게 된 대가가 따른다. 싱글턴 과다사용 혹은 잘못된 사용은 커플링을 조장한다. 협업 시 코드를 이해하기 어렵게 한다. 전역의 분위기를 갖고 있는 싱글턴 객..
한국산업기술대학교 게임공학부 정내훈 교수님 멀티코어 1주차 강의 멀티쓰레드 프로그래밍 멀티쓰레드 프로그래밍 현재 운영체제에서 병렬 프로그래밍의 (유일한) 구현 수단 하나의 프로세스 안에서 여러개의 쓰레드를 실행 시켜 병렬성을 얻는 프로그래밍 방법 Windows, Linux, Android, iOS에서 기본으로 제공하는 유일한 병렬 프로그래밍 API 하드웨어와 운영체제가 직접 지원하는 것은 이것 뿐 다른 API로는 GPGPU가 있음 프로세스 운영체제는 사용자의 프로그램을 프로세스 단위로 관리한다. 실행파일의 실행 => 운영체제가 파일내용을 메모리에 복사후 시작 주소로 점프하는 것. 읽어 들일 때 여러 가지 초기화가 필요하다. 시분할 운영체제는 여러 프로세스를 고속으로 번갈아 가면서 실행한다.(시분할) 실행..
한국산업기술대학교 게임공학부 정내훈 교수님 멀티코어 1주차 강의 교재소개 모리스 헐리히, 니르 샤비트 "멀티프로세서 프로그래밍" 한빛미디어, 2009 장점: 멀티프로세서 프로그래밍 기초를 전부 언밀하게 다룸 단점: 알고리즘 위주로 실제 구현과는 차이가 있음 기타: 치명적인 번역오류, 자바를 사용한 구현 좀더 쉬운책 -> 프로그래머가 몰랐던 멀티코어 CPU 이야기 강의의 흐름 1.멀티쓰레드 프로그래밍의 필요성 / 작성시 문제점 2. 논블록킹 알고리즘의 필요성 3. 논블로킹 알고리즘 작성 테크닉 및 실습 4. 정리 및 상용라이브러리 소개 왜 멀티코어 프로그래밍을 하냐? 요즘 멀티코어를 사용하지 않는곳이 없다. 컴퓨터의 종류 직렬 컴퓨터 (Serial computer = Single core computer)..
STL std::vector vector가 어떤 방식으로 작동하고 메모리를 관리하는지에 대해 이해해봅시다. vector 컨테이너는 자동으로 메모리가 할당되는 배열입니다. 랜덤 엑세스 구조로 순회하는데는 최고의 성능을 보여주지만, 중간값을 삽입 삭제시 복사 이동연산으로 인해 효율이 많이 떨어지게 됩니다. std::vector 메모리 할당 과정 #include #include using namespace std; class TEST { private: int data; public: // 복사 생성자 TEST(const TEST& other) { cout
스마트 포인터 연산자 & 메서드 구현하기 이전에 만들었던 유니크 포인트에서 unique_ptr에서 제공하는 메서드와 연산자를 분석해보며 구현해보도록 합시다. get / release / reset / operator-> /operator= STL std::unique_ptr 코드 분석 - get / operator-> _NODISCARD pointer operator->() const noexcept { return _Mypair._Myval2; } _NODISCARD pointer get() const noexcept { return _Mypair._Myval2; } 유니크 포인터 객체의 포인터를 반환해줍니다. - release pointer release() noexcept { return _STD ..
오늘목표 Beam Particle & 필요한 머테리얼 제작 실습 빔형태의 재질을 만들어 봅시다. 끝으로 갈수록 투명해지는 재질을 만들어봅시다. 파티클 컬러를 지정해주고 sine 패턴을 곱해주어 이미시브컬러와 오파시티에 적용시켜줍시다. 또한 two sided를 켜주어 은면컬링을 꺼줍시다. 파티클 시스템을 만들고 전에 만들었던 재질을 적용시켜줍시다. 파티클 타입데이터를 Beam Data로 설정해준 후 Source와 Target를 생성해줍니다. Source와 Target 위치를 지정해줍니다. 저는 100, -100으로 지정해주었습니다. velocity도 필요없으니 0으로 세팅해줍니다. 또한 Beam Data로가 speed를 0으로 세팅하고, Control Point(Interpolation Points)를 지..