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을 이용하여 분기 없이 두 변수의 값 교환하기

Visual Studio 2015 Graphics Debugger 좋음.

Visual Studio 2015 Graphics Debugger 짱이다. 프레임 구성과정이 다 추척된다. 예를 들어 Draw()함수를 클릭하면 해당 함수에서 사용되는 오브젝트 리스트-텍스쳐,쉐이더,레스터스테이트,스왑체인 다 목록에 뜬다. 얘네들을 클릭하면 텍스쳐의 경우 텍스쳐 이미지를 보여주고 쉐이더를 클릭하면 쉐이더 어세블리 코드와 소스코드 보여주고 여기서 사용하지 않는 변수들 다 분석해줌. 일단 스샷 몇 장 올림. 나중에 상세하게 리뷰를 올릴 예정.

GPU를 이용한 PVS에서 선회한 GPU를 이용한 공한 분할 및 SW Occlusion Culling.

KD트리로 빌드된 Voxelized Mesh -> 최적화 및 최적화된 사각형으로부터 Occluder추출 -> 실시간 SW Occlusion Culling 건물벽에 가려서 안보이는 공간(Leaf)와 사각형들을 왕창 걸러내고 있다. 결함이 있어서 사용 못할까봐 엄청 걱정했는데 이 정도면 써먹을 수 있다. 당초 PVS를 계산하려던 거였지만 모로가든 한양으로만 가면 된다고 소기의 목적은 달성. 이번 엔진의 공간 분할 체계는 이걸로 간다.

Windows Server 2016의 새로운 기능 Windows Container설정하기.

페이스북에 Windows Container관련 잘못 포스팅한게 있어서 정정함. Windows Container를 사용하려면 Hyper-V가 필요하다고 적었는데 틀렸다. Hyper-V필요없다. 먼저 다음의 링크를 따라가서 동영상을 보자. Hyper-V를 사용하고 있다. https://msdn.microsoft.com/virtualization/windowscontainers/quick_start/container_setup 여기 있는 영상에선 Windows 10을 사용하기 때문에 Windows Container가 활성화된 Windows Server 2016 Core버전의 vhd를 받아서 Hyper-V로 돌리고 있는것이다. Windows 10에서 Windows Container를 테스트하고 싶으면 당연히 이렇게 해야하지만 Windows Server 2016을 … More Windows Server 2016의 새로운 기능 Windows Container설정하기.

GPU를 이용한 PVS 계속 진행중.

GPGPU를 이용한 PVS 계속 진행중. 1. 월드의 삼각형들 -> 복셀화 2. 복셀화된 월드를 KD-Tree로 빌드 3. KD-Tree에서 삼각형과 교차하지 않는 순수한 육면체 leaf들을 얻어냄 4. 각 leaf들에서 다른 leaf들에 대해 visibility 테스트 5. 그 결과를 leaf별로 Bit 테이블로 저장. 녹색 선이 leaf의 영역을 나타내는 박스. 빨간색 사각형들이 현재 위치한 leaf의 사각형들. 노란색 사각형들이 이 leaf에서 … More GPU를 이용한 PVS 계속 진행중.

Visual Studio 2015에서 fscanf계열 함수 링크 에러

64비트 어셈코드를 포함하는 예전에 작성한 코드를 vs 2015의 새로운 툴셋 v140 타겟으로 빌드하니 링크 에러 발생. 어셈코드에서 fscanf,sscanf를 호출하는데 링크 에러가 발생한다. 몰랐는데 VC++블로그에 이에 해당하는 내용이 이미 포스팅되어있었다. The printf and scanf family of functions are now defined inline. 라고 적혀있다. printf와 scanf패밀리 함수들이 인라인으로 선언되어있다고 한다. 그럼 msvcrt.lib에는 바이너리가 없겠네. 해결책은 legacy_stdio_definitions.lib을 추가해주면 … More Visual Studio 2015에서 fscanf계열 함수 링크 에러