본문 바로가기

All250

1 - 폴리곤 메쉬(Polygon mesh) 책을 보며 개인적으로 공부하는 내용이므로 틀린 부분이 있을 수 있습니다. 자료 및 내용 출처 모델링(Modeling) 그래픽스 관점에서 3차원 게임의 제작 단계는 보통 다음과 같은 파이프라인(pipeline) 과정을 가진다. 이는 각 단계의 결과가 다음 단계의 입력으로 사용되기 때문이다. 게임 제작의 첫 번째인 모델링 단계에서는 게임 환경을 구성하는데 필요한 각 사물, 물체들을 만들게 된다. 예를 들면 나무, 지형맵, 사람 등이 존재한다. 폴리곤 메쉬(polygon mesh) 이러한 객체는 여러 기법으로 구성될 수 있지만, 게임과 같은 실시간으로 처리되는 물체들은 거의 대부분 폴리곤(polygon) 모델링 기법을 사용한다.(GPU가 폴리곤 메쉬 처리에 최적화되어 있기 때문) 폴리곤의 원래 뜻은 다각형이지.. 2020. 7. 13.
게임 개발을 위한 선형대수학 기본 정리 개인적으로 공부하는 내용이므로 틀린 부분이 있을 수 있습니다. 있다면 알려주세요 ~! 게임 개발을 위한 선형대수학 기본 행렬과 벡터(Matrices and Vectors) 행렬(matrix) 행렬은 주로 Matrix의 앞 문자를 따서 대문자 M으로 표현한다. m개의 행과 n개의 열로 이루어진 행렬을 m X n 행렬이라 한다. 행과 열이 같으면 정사각 행렬이라 한다. 행렬 M1와 행렬 M2의 곱셈이 가능하려면 행렬 M1의 열과 행렬 M2의 행이 같아야 한다. 즉 M1(a X b) M2(b X c)와 같이 되어야 하고 그 결과는 M3(a X c) 행렬이 된다. 행렬의 교환 법칙은 성립하지 않는다는 것을 잊지말자. 벡터(vector) 벡터는 보통 Vector의 앞 문자를 따서 소문자 v로 표현한다. 벡터는 행.. 2020. 7. 12.
행렬 변환에 대해 알아보자 개인적으로 공부하는 내용이므로 틀린 부분이 있을 수 있습니다. 있다면 알려주세요 :) 행렬 변환 기하와 벡터 또는 선형대수학에서 배웠다면 행렬을 통한 도형 변환에 대해 배웠을 것이다. 예를 들면 다음 그림과 같이 다양한 동작을 수행하는 행렬을 곱하여 도형을 변환시킬 수 있다. 출처 행렬의 장점은 편리함에 있다. 예를 들어 어떤 도형의 크기를 늘리고 회전시키고 싶다면 따로 따로 적용하는 것이 아니라 크기를 늘리는 행렬과 회전을 시키는 행렬을 서로 곱하여 하나의 행렬을 얻기만 하면 된다. 그리고 얻은 행렬을 원하는 점에 적용하면 크기와 회전 등이 알맞게 적용된다. Direct3D 에서는 이와 같은 행렬 변환을 지원한다. 최종적으로 변환이 완료된 행렬을 정점에 곱하면 변환된 정점을 얻을 수 있다. 변환 종류에.. 2020. 7. 5.
[C++] std::thread 기본 활용 방법을 알아보자 | mutex, condition_variable, 종료 방법 개인적으로 공부하는 내용이므로 틀린 부분이 있을 수 있습니다. 있다면 알려주세요 :) 1. 공유 자원에 대한 race condition 해결하기 (mutex) 하나의 프로세스 내에 두 개 이상의 스레드가 존재하는 멀티 스레딩 환경에선 한가지 문제점이 존재한다. 바로 하나의 자원에 여러 스레드가 동시에 접근함으로 인해 생기는 문제점이다. 예를 들어 다음 프로그램은 10개의 스레드가 생성되면서 각자 Foo 함수를 실행한다. Foo 함수에선 s_num이라는 전역 변수를 증가시키고 감소시킨다. 따라서 결과 값은 0을 기대하지만 직접 실행해보면 항상 0이 보장되진 않는다. volatile 키워드는 테스트를 위해 임시적으로 컴파일러의 최적화를 차단해두기 위함이다. volatile int g_num = 0; void.. 2020. 7. 3.
[C++] std::thread 생성에 대해 알아보자 개인적으로 공부하는 내용이므로 틀린 부분이 있을 수 있습니다. 있다면 알려주세요 :) 1. 스레드 생성하기 (Create) C++에서의 스레드는 C++ 11에서 등장한 thread 클래스를 사용한다. 이전엔 각 OS에서 제공하는 스레드를 사용하였으며, 해당 스레드는 윈도우와 리눅스 모두 호환이 된다. 우선 스레드를 생성하기 위해선 헤더 파일을 인클루드 해주어야 한다. 그리고 다음과 같이 스레드를 생성한다. Foo 함수를 실행하는 스레드 생성 #include void Foo() {;} void main() { std::thread my_thread1(Foo); } PrintMessage 함수를 실행하는 스레드 생성 위 코드는 Foo() 함수를 실행하는 스레드를 1개 생성한 것이다. 만약 함수에 인자가 존재.. 2020. 6. 26.
스레드 관련 글 https://www.cppkorea.org/CppCoreGuidelines/Concurrency/#Rconc-detached_thread Concurrency - C++ 핵심 가이드라인 CP: 동시성과 병렬성 종종 우리 컴퓨터가 동시에 많은 작업들을 해주길 (최소한 그렇게 보이기를) 원할 때가 있죠. 이유는 다양합니다. (예를 들면, 단일 프로세서만 쓰면서 여러 이벤트를 기다리 www.cppkorea.org 멀티 스레드 프로그래밍에 관한 고찰 1) https://kuaaan.tistory.com/114?category=91638 멀티 스레드 프로그래밍에 관한 고찰 2) https://kuaaan.tistory.com/116?category=91638 2020. 6. 25.