MS 테크데이즈 2015에서 발표했던 데모 D3DVideoPlayer의 소스코드 공개합니다.(C++로 UWP앱 개발하기)

MS Techdays 2015 in SEOUL에서 발표했던 내용중 D3DVideoPlayer 데모가 있는데요. 소스 코드를 요청하시는 분들이 계셔서 소스코드 공유합니다. 버그 및 결함이 틀림없이 존재할 것입니다. 이에 대해서 저는 아무 책임도 지지 않습니다. 소스코드는 MIT라이선스를 적용받습니다. https://github.com/megayuchi/Windows-UWP/ 발표자료는 아래 링크를 참조해주세요. https://doc.co/jERsyS

MS 테크데이즈 2015에서 발표했던 슬라이드 공유합니다. (C++로 UWP앱 개발하기)

강연영상 MS Techdays 2015 ch9영상 https://channel9.msdn.com/Events/TechDays/TDK2015/T4-6 발표자료   소스코드 공유에 대해서 많은 분들이 요청하신 D3DVideoPlayer소스를 공유하였습니다. 버그 및 결함이 틀림없이 존재할 것입니다. 이에 대해서 저는 아무 책임도 지지 않습니다. 소스코드는 MIT라이선스를 적용받습니다. https://github.com/megayuchi/Windows-UWP/

FFMpeg + D3D + C++을 사용한 Windows 10 UWP앱 동영상 플레이어 작업

테크데이즈때 데모로 사용할 FFMpeg + D3D + C++을 사용한 Windows 10 UWP앱 동영상 플레이어 거의 완성. 소리랑 영상 싱크 맞췄고 종료시 리소스 체크 완료. 사운드 출력은 Media Foundation을 사용했다. 영상은 디코딩된 yuv데이터를 그대로 텍스쳐로 만들어서 프로젝션된 사각형으로 렌더링한다. 쉐이더에서 yuv->rgb해서 바로 D3D렌더타겟에 출력했다. 게임처리하듯 싱글 스레드 루프에서 폴링하면서 렌더링 하는데 MediaElement에서 정확한 타임스탬프를 얻을 수 … More FFMpeg + D3D + C++을 사용한 Windows 10 UWP앱 동영상 플레이어 작업

예전 개발한 게임에 오큘러스 리프트 적용하는중

간만에 개발 관련 썰. 예전 개발했던 게임에 오큘러스 리프트를 적용했다. 다른 프로젝트를 위해서 시험삼아 적용하고 문제점을 하나하나 해결해가고 있는 중이다. 오큘러스 리프트 SDK가 DX11만 지원하는데 내 게임 엔진은 처음부터 Direct X 11로 개발했으므로 적용하는데 큰 어려움은 없었다. 다만 오큘러스 SDK가 오른손 좌표계를 사용하므로 DX의 왼손좌표계로 바꾸느라 좀 애먹었다. 하여간 3D렌더링쪽은 대충 거의 문제를 해결했다. 그 … More 예전 개발한 게임에 오큘러스 리프트 적용하는중

Windows 10 UWP에서 C++/CX의 ref class객체들을 STL컨테이너와 함께 사용할 경우 ref count관리는 어떻게 이루어지는가

나는 Windows 10 UWP앱을 C++/CX로 개발하고 있다. 그런데 난 STL을 잘 사용하지 않는다. 아주 가끔 사용한다. 정말 노가다가 귀찮을때만 쓴다. 오늘 UWP앱으로 테스트할게 있어서 몇 줄 코드를 작성했다. 노가다가 귀찮아서 stl::queue를 사용했다. 무심코 ref new로 할당한 ref class 객체(이하 ^객체-hat object로 표시함)를 여기 집어넣으면 ref count가 증가할까? 라는 의문이 들었다. 테스트를 해보니 놀랍게도 ref count … More Windows 10 UWP에서 C++/CX의 ref class객체들을 STL컨테이너와 함께 사용할 경우 ref count관리는 어떻게 이루어지는가

변수의 값(임시변수,xor) 교환을 컴파일러는 어떻게 처리하는지에 대한 테스트

어제 포스팅했던 xor교환에 대한 추가 포스팅입니다. 페북 타임라인에서 A ,B를 교환하는 C코드를 컴파일러는 어떻게 처리하느냐에 대한 주제가 나왔습니다. 댓글로 쓸 내용이지만 내용이 길어져서 워드프레스 한페이지 정도는 할애해도 될것같아 이쪽으로 옮겨적습니다. 김민장님이 제공해주신 아래 코드로 테스트 해봤습니다. void xor_swap(int &a, int &b) { a = a ^ b; b = a ^ b; a = a … More 변수의 값(임시변수,xor) 교환을 컴파일러는 어떻게 처리하는지에 대한 테스트

xor을 이용하여 분기 없이 두 변수의 값 교환하기

얼마전 Visual C++ MVP모임에 나갔다가 임시변수 없이 두 변수의 내용을 맞바꾸는 기법에 대한 애기가 나왔다. 바로 xor로 바꾸는 방법이 거론됐다. 이 내용을 전혀 모르는 분들이 계실지 모르니 잠깐 설명을 하자면.. A,B두 변수가 있다. C = A^B이다. (xor연산자는 C에서 ^로 쓴다. 따라서 ^로 표기한다.) 이때 A^C = B이다. 또한 B^C = A이다. 그러니까 아래와 같다. C … More xor을 이용하여 분기 없이 두 변수의 값 교환하기

struct align에 대한 단상

동일한 내용의 정보를 가지는  개념적으로는 똑같은 사이즈인 두개의 구조체가 있다. 64비트에서 컴파일해보면 이 두개의 구조체는 각각 다른 사이즈를 가진다. 물론 #pragma pack(push,1)을 주면 똑같은 사이즈로 컴파일 된다. STRUCT_ALIGNED의 크기는 32바이트고 STRUCT_UNALIGNED의 크기는 40바이트다. STRUCT_UNALIGNED구조체의 경우 1차적으로 패널티를 피하기 위해서 변수별로 padding이 들어간다. 변수마다 억세스 단위만큼의 얼라인을 맞추게 되고 최종적으로 구조체가 배열로 잡히더라도 8바이트에 얼라인 될 수있도록 사이즈가 … More struct align에 대한 단상