2012-05-24 3 views
2

안녕하십니까!FMX Direct 2D Issue

현재 프로젝트 중 하나에서 다소 성가신 문제가 있습니다. 내 현재 프로젝트 중 하나에서 하드웨어 라이브러리 (Andreas Hausladen의 NVAPI Pascal 헤더 번역)를 사용하고 있습니다. 이 라이브러리를 통해 NVIDIA GPU에서 정보를 검색 할 수 있습니다. 나는 온도를 검색하는 데 사용하고 Firemonkey의 TAnimateFloat의 도움을 받아 맞춤형 다이얼의 각도를 조정하여 온도를 나타냅니다.

FMX는 Windows에서 Direct 2D로 기본 설정되어 있으므로 다양한 "게이머"도구 (MSI Afterburner, FRAPS 등)를 사용하여 FPS를 모니터링 할 수 있습니다.

내가 겪고있는 문제는 시스템을 절전 모드 (RAM/S3 일시 중단)로 설정 한 다음 다시 시작하면 응용 프로그램의 인터페이스가 부분적으로 또는 완전하게 블랙 아웃되고 UI의 아무 것도 눈에 띄게 상쾌합니다. NVAPI 라이브러리 초기화를 정기적으로 호출하고 타이머를 통해 결과를 확인하지만 문제가 해결되지 않습니다. 또한 부모 다이얼에 ProcessMessagesrepaint을 실행 중이며 그 이유는 어린이 컨트롤이기 때문입니다 (양식 또는 동급의 경우 repaint을 찾을 수 없기 때문에).

다양한 버전의 라이브러리를 사용해 보았는데 각각 동일한 문제가 발생했습니다. 다음 단락은 이것이 실제로 문제가 아니 었으며 실제로는 잘못한 렌더러임을 나타냅니다.

나는 하나의 해결책이 있지만 좀 더 우아하고 사용 가능한 것이 있는지 알고 싶다. 내가 가진 솔루션은 FMX.Types.GlobalUseDirect2D := False;을 내 프로젝트 소스에 Application.Initialize 앞에 추가하는 것입니다. 그러나 FMX는 Direct2D 대신 GDI +를 사용합니다. 물론 작동하지만, 가능하다면 D2D를 옵션으로 열어두고 싶습니다. FindCmdLineSwitch을 사용하여 매개 변수에 따라이 기능을 설정/해제 할 수 있지만 D2D에서 GDI +로 또는 그 반대로 변경하려면 응용 프로그램을 다시 시작해야합니다.

FPS 카운터 (필자의 경우 FRAPS의 것)가 UI에서 여전히 활동이 있음을 나타냅니다 (값이 예상대로 변경됨). 그러나 UI 자체는 눈에 띄지 않는 상쾌감을주지 못합니다.

이 문제는 Direct2D 또는 Firemonkey 구현의 버그입니까? 더 중요한 것은 D2D를 비활성화하는 것보다 더 나은 수정 방법이 있습니까? 마지막으로 응용 프로그램을 종료하지 않고 응용 프로그램을 "다시 초기화"할 수도 있습니다 (응용 프로그램을 다시 시작하지 않고도 GDI +와 D2D 사이를 전환 할 수있게 할 수 있습니까?).

답변

1

이 업데이트 전에 4 핫픽스에 FM과 함께 문제가 될 수있다 - 26,664/QC 104210 수정 사용자 잠금 해제 후 응답하지 되 FireMonkey HD 양식의 문제 -이 당신을 위해 문제를 해결할 수 있습니다 설치.

업데이트는 EDN (직접 링크 http://cc.embarcadero.com/item/28881)에서 등록한 사용자 다운로드의 일부 여야합니다.

+0

'FMX.Canvas.D2D'에서 1-2 줄이 변경되어 실제로 수정되었습니다! 많은 감사 폴! –

+0

서비스의 기쁨 :-) –