2010-06-11 4 views
3

저는 화면 아래쪽에 스크롤링 텍스트를 표시하는 작은 데스크탑 가제트 유형 응용 프로그램을 작성했지만 (이전 CNN 뉴스 시세와 비슷 함) GDI의 성능은 단지 8-12 % 쿼드 코어에서는 20 %, 싱글 코어에서는 20 %) 병목 현상을 제거하려고 시도한 후에도 마찬가지입니다.데스크톱 응용 프로그램에 OpenGL을 사용하는 것이 합리적입니까?

나는 모든 것을 렌더링하기 위해 OpenGL을 사용하는 것을 고려해 보았지만, 사용자가 하드웨어 가속을 요구하는 합리적인 선택인지는 모르겠습니다.

아무에게도 입력 사항이 있습니까?

답변

2

OpenGL을 사용하는 데 익숙하고 의도 한 사용자가 OpenGL에서 제공하는 추가 종속성에 만족한다면 나는 그것을 말할 것입니다. :)

GDI를 사용하는 측면에서 가능한 한 텍스트를 몇 번 렌더링해야합니다 (비트 맵으로 렌더링하고 그 대신 스크롤하는 기술을 통해).

두 옵션 중 어느 것도 매력적이지 않은 경우 항상 DirectX가 있습니다.

+0

지금 당장은 모든 티커가 모든 활성 항목 (텍스트, 비트 맵 등)을 반복하고 위치를 업데이트 한 다음 다른 방법으로 비트 맵에 모든 항목을 그립니다. 실제 창으로 그릴 때 티커 비트 맵은 창 자체에 대해 bitblt됩니다. 이 디자인을 사용하면 선택 적으로 하나 이상의 시세 표시기를 가질 수 있기 때문에 함께갔습니다. – JamesK89

1

그런 프로그램을 위해 열린 gl을 설치하고 싶지 않습니다. 병목 현상을 없애려고 "시도"했다고 말하면서 성공한 것처럼 들리지는 않습니다. 언급 한 lzcd와 마찬가지로, 텍스트를 스크롤하는 다른 방법은 끊임없이 다시 칠하는 것보다 빠릅니다. 비트 맵에 그려서 스크롤하는 것이 어떨까요?

+0

예, 원래 GDI +를 사용했지만 GDI로 옮겨서 성능이 크게 향상되지 않았습니다. 나는 또한 새로운 프레임이 오버 드로를 막을 준비가 될 때까지 페인트 이벤트를 무시하는 것과 같은 작업을 시도했다. 그러나 lzcd에서 언급 한 것처럼 나는 전체 티커를 사전에 미리 렌더링하는 것을 생각하지 않았습니다. 이것은 마법의 탄환처럼 들립니다. – JamesK89

+1

@Ed : 적어도 일반적인 OS의 경우 사용자가 OpenGL을 사용하기위한 프로그램을 추가로 설치하지 않습니다. 의심 할 여지없이 * 예외가 있습니다 (예 : 적어도 기본적으로 Mesa3D를 포함하지 않는 Linux 배포판). 그러나 일반적으로 사용자에게는 투명합니다. –

+0

그래, 맞아. 당신은 여전히 ​​앱에 번들 (또는 링크)을하고 올바른 버전을 사용하고 있는지 확인해야한다. 내 요점은, 아주 단순한 것을 위해 큰 그래픽 라이브러리를 사용할 이유가 없다는 것입니다. –

2

WPF에서 응용 프로그램을 작성하고 WPF가 가속을 처리하도록 할 수 있습니다 (DirectX가 지원합니다).

관련 문제