2014-06-23 5 views
0

2014 년 7 월 16 일 업데이트 : SharpDX "MiniCube"샘플 프로젝트를 Universal 8.1 프로젝트로 변환했습니다. 그것은 100 % 자체 포함되어 있습니다. 이 문제를 보여줍니다. 정보가 포함 된 "READ ME.txt"파일이 있습니다. 당신은 여기에서 다운로드 할 수 있습니다 :DirectX 용 Windows Phone 8.1 에뮬레이터

Download SharpDX MiniCube Universal 8.1 project


내 문제는 비주얼 스튜디오 2013에서 윈도우 폰 8.1 에뮬레이터가 옆으로 가로 모드를 표시한다는 것입니다. 이미지가 가로로 보이지만 올바르게 보이지만 한쪽 끝에 앉아 디스플레이 상단에서 90도 회전했습니다. 여기에 사진이 무슨 뜻인지를 보여주고 있습니다 : 당신은 전체 크기를 확인하려면 이미지를 클릭 할 수 있습니다

PortraitLandscape

.

앱과 관련하여 가로 모드이며 모든 터치 처리가 제대로 표시되는 것처럼 제대로 작동합니다. 한쪽 끝이 회전 된 에뮬레이터에 표시됩니다.

SharpDX (C# 용 DirectX 래퍼)를 사용하는 C# 프로젝트입니다. 이 문제가 실제 장치에서 발생할지 여부는 알 수 없습니다. 난 하나도 없어. 분명히 실제 장치에서 제대로 작동해야하는지 알지 못해도 내 앱을 릴리스 할 수는 없습니다.

나는 내 코드에서 멋진 것을하지 않는다. 시뮬레이터와 실제 장치 모두에서

https://github.com/sharpdx/SharpDX-Samples/tree/master/WindowsAppStore81/CommonDX

같은 소스 코드가 WinRT (컴퓨터/태블릿) 버전에서 제대로 동작 : I는 수정되지 않은 SharpDX 샘플에 사용 된 "CommonDX"소스 코드를 사용 .

아무에게도 이것에 대해 아는 사람이 있으면 가능한 한 내게 말해주세요. 감사!


2014 년 7 월 16 일 업데이트 : 나는 나가서 Nokia Lumia 520을 구입하여 Windows 8.1로 업데이트했습니다. 이 같은 문제는 실제 장치에서도 발생합니다. 유일한 차이점은 상단에서 벗어나는 것이 아니라 전체 회전 폭을 화면에 맞추기 위해서입니다.

또한 SharpDX 2.6.2 DLL을 사용하고 있다고 덧붙여 야합니다.

필자가 말했듯이 필자는 Windows App Store 8.1 프로젝트 (컴퓨터 및 태블릿 용)에 사용하는 것과 동일한 소스 코드를 사용하고 있으며 완벽하게 작동합니다. Windows Phone 8.1에서 약간의 변경이있었습니다. CommonDX 소스 코드의 SwapChainTargetBase.cs 파일에서 swapChain.ResizeBuffers() 호출은 SharpDXException 예외 (HRESULT 0x887A0004 DXGI_ERROR_UNSUPPORTED)를 생성합니다.

이 경우 화면 크기가 변경 될 때마다 발생합니다. 물론 방향을 변경하기 위해 장치를 기울일 때 발생합니다. 이 문제를 해결하기 위해 간단히 현재 "swapChain"을 삭제하고 기존 코드의 크기를 변경하지 않고 기존 코드를 새 코드로 만듭니다. 이 변경으로 인해 여기에서 발생한 문제는 발생하지 않습니다.

샘플 코드로 SharpDX 샘플을 검사했지만이 날짜부터 Windows Phone 8.1에 대한 샘플은 없습니다. "WindowsAppStore81"(PC/태블릿) 및 "WindowsPhone8"샘플은 있지만 "WindowsPhone81"또는 "WindowsUniversal81"샘플은 없습니다.

나는 어떤 스트레칭으로도 DirectX 전문가가 아닙니다. 나는 내 도구가 나를 위해 일하도록하기 위해 싸우지 않고 앱을 만드는 것에 종사하고있다. 그리고 OpenGL을 다른 모든 플랫폼에서 사용해도 아무런 문제가 없습니다. 그러나 어떤 경우 든 시도한 후에도 가로보기를 화면 상단에서 회전시키지 못했습니다. 스크린 샷에서 내 앱이 가로보기임을 알고 가로 버퍼를 렌더링하는 것을 볼 수 있습니다. 이 문제의 원인은 무엇이든, 그것은 내 자신의 소스 코드 외부에 있습니다.

내 앱이 내 손안의 Windows Phone 8.1을 실행하는 실제 장치에서 완벽하게 작동하며 가로보기를 제대로 표시하지 않기 때문에 앱을 릴리스 할 수 없습니다. 그리고 그것을 바꾸기 위해 내가 할 수있는 일이없는 것 같습니다.

Windows Phone 8.1 용 세로 및 가로 모두에서 작동하는 SharpDX 프로젝트를 구축 한 사람이 있습니까?

하나의 마지막 참고 사항 : 왜 Microsoft는 OpenGL에 대한 지원을 허용하지 않고 C# 언어에 대한 DirectX 지원을 포함하지 않습니까? SharpDX가 아니었다면, 우리는 완전히 망했다.

답변

1

DirectX를 직접 사용하면 Windows Phone에서 프레임 버퍼가 처리되는 방식이 변경되지 않는 것으로 보입니다. 가로 모드에서 그래픽을 수동으로 회전해야합니다.

DX::ThrowIfFailed(
    m_swapChain->SetRotation(displayRotation) 
    ); 

그것은 명확하게 설정할 필요가 없습니다 : 나는 다음과 같은 고정 된 문제를 제거하는 것을 발견 http://www.catalinzima.com/2012/12/handling-orientation-in-a-windows-phone-8-game/

+0

감사합니다. 마이크. 대답을 얻는 데 얼마나 오랜 시간이 걸렸습니까? 그러나 문서 상태와 마찬가지로, "이 문서에 대한 문서는 정말 부족합니다." (오리엔테이션을 바꾸는 것은 디스플레이의 크기를 변경하는 것과 다를 바 없으며 왜 그런 번거 로움을해야하는지 모르겠습니다.) – msedore