전체 글 89

스스마트포인터맛 궁금해 허니 궁금해깨물면 메모리 릭이 나는 그맛

제목 곧 내용 스마트 포인터 궁금해 깨물면(서로 참조하면) 메모리 릭이 나는 그 맛 스마트 포인터 C++에서 메모리에 대한 참조와 소유권을 관리하는 특별한 클래스. 메모리에 대한 참조와 소유권을 단 하나만 허락하는 unique_ptr, 메모리에 대한 참조와 소유권을 레퍼런스 카운트로 관리하는 shared_ptr, 메모리에 대한 참조를 허락하지만 소유는 하지않는(레퍼런스 카운트를 올리지 않는) weak_ptr이 있다. 코드 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 31 32 33 #include #include using namespace std; class circular { public: circul..

2020 이전/C++ 2019.11.06

vector대 list

퀘스트를 작업할 때, list 컨테이너로 퀘스트 목록을 관리하고 있었는데 갑자기 찾아온 뇌절 vector를 쓰면 어떻게 될까? 과연 어떻게 될까? 요약 int 자료형 앞에서 부터 삭제할 때 4만개~5만개부터 list가 빠름 int 10000개 기준으로 앞의 원소를 제거하는 속도는 16byte까지 vector가 우세 string 넣는 순간부터 심각하게 늦어짐 순수 int로 32byte 채우고 int char섞어서 32byte 채운 구조체로 시험해 봤을 때 성능 차이 거의 없음 결론 string을 제거하는게 best. string을 썼는데 자주 정렬할 때 list를 사용. 그래도 쓸거면 역시 string 대신 char 써라 int 자료형 Quest(실제 썼던 자료형) (string기본적으로 3개 들어있다) ..

2020 이전/C++ 2019.10.11

C++ Korea 6th 세미나 종합 선물세트 제 2호 후기

아르바이트 일정 때문에 항상 가고싶어도 못갔었는데 이번에는 시간이 맞아서 갈 수 있었다. 우연히 듣고싶은 강의들이 전부 다 트랙1에 있어서 트랙1 강의실 죽돌이했다. 세션 1. 랜덤을 사용하는 우아한 방법 링크: http://blog.naver.com/drvoss/221466013135 새벽 4시에 자서 3시간 정도 자고 피곤한 상태로 과연 내가 졸지 않고 잘 들을 수 있을까? 하는 생각이였는데 세션이 너무 재미있어서 시간가는지도 모르고 들었다. 그리고 집에 오자마자 카메라 셰이킹 펄린노이즈 생성 코드에 들어간 rand()함수를 싹 바꿨다... rand()함수는 선형합동생성 알고리즘 때문에 난수열이 8^n 주기보다 짧게 같은 수를 반복한다. 또한 srand(time(NULL))에서 같은 초단위의 값이 들..

프로그래머스 단어 변환

문제 : https://programmers.co.kr/learn/courses/30/lessons/43163 코딩테스트 연습 - 단어 변환 | 프로그래머스 두 개의 단어 begin, target과 단어의 집합 words가 있습니다. 아래와 같은 규칙을 이용하여 begin에서 target으로 변환하는 가장 짧은 변환 과정을 찾으려고 합니다. 1. 한 번에 한 개의 알파벳만 바꿀 수 있습니다. 2. words에 있는 단어로만 변환할 수 있습니다. 예를 들어 begin이 hit, target가 cog, words가 [hot,dot,dog,lot,log,cog]라면 hit -> hot -> dot -> dog -> programmers.co.kr #include #include #include using na..

다이렉트X Stream Output을 이용한 파티클

스트림 출력 개요 DirectX10부터 렌더링 파이프라인에 Stream-Out(스트림출력) 단계가 추가되었다. 스트림 출력 단계를 이용하면, GPU에서 Stream Output에 묶인 "정점 버퍼"에 기하 셰이더에서 정점을 출력하는 방법으로 직접 정점목록 형태를 정점 버퍼에 기록할 수있다. 그리고 그 정점 버퍼에 저장된 정점들을 차후의 렌더링 파이프라인의 입력으로 사용할 수 있다. 스트림 출력을 이용한 파티클 구현 스트림 출력을 이용하여 파티클을 구현하는 방법은 다음과 같다. 1. 스트림 출력을 거친 정점의 렌더링을 막기위해 픽셀 셰이더와 뎁스/스텐실을 비활성화 한다. 2. 정점 버퍼를 스트림 출력에 묶어 새로운 정점을 기하셰이더로 정점을 출력한다. (SO 단계) 3. 스트림 출력에 묶인 정점 버퍼를 떼..

2020 이전/DirectX 2019.09.19

Depth bias Blend, Two pass Render 이용한 배리어 만들기

depth bias blend는 겹쳐진 오브젝트들의 경계면이 날카롭게 되는것을 픽셀 셰이더 단에서 뒷 오브젝트와의 거리가 근접할 수록 alpha 값을 빼주어 부드럽게 만드는 방법이다. 디퍼드 렌더링에서는 Depth Buffer에 깊이값을 기록해두고 있으므로 이 렌더타겟에 기록된 값을 가져와 지금 그릴 오브젝트와 이미 그려진 오브젝트의 거리를 얻을 수 있다. 소프트 파티클은 아니지만 이 방법을 이용해서 배리어와 겹쳐지는 부분의 alpha를 1로 주어 효과를 줄때, 경계면의 픽셀들은 원하는 색으로 칠할 수 있다. 문제는 반투명한 구체를 생성하여 Back face culling을 껐을 때 위의 이미지처럼 얼룩지는 경우가 생긴다. Depth Read를 끄고 렌더링 깊이 버퍼 읽기를 끄고 렌더링했을 때는 "일단은..

2020 이전/DirectX 2019.08.30