2011-01-03 5 views
8

윈도우에 고정 된 프레임 속도 (예 : 30fps)로 애니메이션을 표시하는 프로그램이 있습니다.GTK/GDK의 디스플레이 버퍼에 직접 쓰는 방법

현재 SDL을 사용하지만 불행히도 데스크톱 통합 (드래그 & 드롭과 같은)이 부족하여 대신 GTK를 사용하고 싶습니다.

은 그래서 (창 이중 버퍼링 가정) 수행 할 작업 :

1 obtain off-screen buffer 
2 render my stuff to buffer 
3 tell the toolkit to swap buffers 
4 update window 
5 repeat 

내가 아주 기본적인 GDK/GTK를 제외한 모든 기능을 사용하지 않으 만들고 창을 관리받을 호출 입력 이벤트.

FAQ에는 GdkRGB를 사용하는 것이 좋습니다. 그러나 GdkRGB에 대한 공식 문서에서는 더 이상 사용되지 않는 gdk_draw_rgb_image() 기능을 사용합니다. 실제로 대부분의 GdkRGB 기능이 있습니다.

대신 OpenGL을 사용하는 것이 좋습니다. 그 문제는 GTK의 일부가 아닌 GtkGLArea와 같은 드문 라이브러리가 필요하다는 것입니다 (기본적으로 설치되지 않은 libs에 의존하고 싶지 않습니다). 또한, 내 시스템에서 드라이버의 OpenGL 지원은 제한적입니다.

카이로 (일부 비난 기능에 대한 대안으로 제공되는)를 살펴 보았지만 상대적으로 간단한 문제에 대해서는 더 많은 상용구 코드가 추가 될 것입니다.

+0

보조 라이브러리가없는 GTK는 작업에 적합한 도구가 아닌 것 같습니다. 그리기 툴킷이 아닌 사용자 인터페이스 툴킷입니다. – ptomato

답변

4

저는 개인적으로 GdkRGB가 합당한 선택이라고 말합니다. 그것은 간단하도록 설계되었으며, 그 범위는 여러분이 묘사하는 것과 거의 같습니다. 사용되지 않는 코드를 사용하는 것은 우스꽝스러운 일입니다. 지금 일하고 싶다면 훌륭한 선택이 될 수 있지만, 앞으로 코드를 확장하고 유지 관리하려면 대안을 살펴 봐야합니다.

그 중 카이로가 가장 좋은 방법 일 것입니다. 조금 더 많은 상용구가 있습니다 - 당신은 꽤 작고 이해하기 쉬운 몇 가지 예가있는 http://cairographics.org/samples/을 봐야합니다. 카이로의 잠재적 이점 중 하나는 하드웨어 가속화 가능성이 높다는 것입니다.

[면책 조항 : 저는 GdkRGB의 원본 저자입니다. 지금은 더 이상 사용하지 않는 것이 슬프지만, 그 목적이 잘 돌아간 것 같아요.]

관련 문제