2017-01-02 2 views
0

내가 라즈베리 파이 3 SDL2를 기반으로 프로그램을 작성하고 3.5 "Waveshare SPI의 LCD를 사용합니다. SPI의 인터페이스를 병렬 때문에이 느립니다. 내가 선을 그릴 내 프로그램에서SDL에서 일부 창만 업데이트하는 방법은 무엇입니까?

, 텍스트 & 다른 그래픽 직원을 .이 기능은 매우 느리게, 나는 화면을 업데이트 SDL_RenderPresent 전화. 내 응용 프로그램에서

창의 조금 부분이 수정되고마다. 나는 윈도우의 유일한 작은 부분을 업데이트 할 수있는 해결책을 찾기 전체 화면 대신 DirectFB이 표시되며 결과는 대단합니다 .SDL에서 특정 사각형 만 업데이트하려면 어떻게합니까?

답변

0

SDL_RenderPresent은 수직 동기화를 수행하기 때문에 "느릴"수 있습니다.

wiki.libsdl.org에서

: 당신은 1.2 표면에서 나오는 및 블리트 전체 렌더러 아이디어에 붙어있는 경우

, 당신의 주 표면으로 렌더링을 생각하고 SDL_RenderCopy() 블리트로 기능을 기존 SDL_Flip() 함수로 SDL_RenderPresent()와 함께 사용합니다.

그리고 wiki.libsdl.org/MigrationGuide에서

:

SDL_Surface/2D 렌더링 : 표면은 여전히 ​​존재하지만, 대신 SDL_Surfaces를 사용하여, 당신은 2D와 SDL_Textures를 사용 (렌더링을 가속화하는 것이 좋습니다 가능한 경우 SDL_CreateRenderer()). 대신 텍스처를 렌더링하는 경우

그래서, 당신은 당신의 주요 SDL_Renderer에 텍스처의 일부를 복사 (클리핑 사각형을) SDL_RenderCopy를 사용할 수 있습니다.

렌더링이 끝나면 SDL_RenderPresent을 사용하여 디스플레이에 표시하거나 나타냅니다. 이것은 백엔드에 따라 vsync를 기다린 다음 버퍼 스왑을 수행 할 수 있습니다.

면책 조항 : 나는 결코 DirectFB 백엔드를 SDL2와 함께 사용하지 않았습니다. OpenGL 만 있습니다.

+0

은 SDL에서 일부 화면 만 업데이트하는 솔루션이 아닙니까? – SAP

+0

@SAP 예,'SDL_Textures'에 렌더링 한 다음'SDL_RenderCopy'를 사용하여 (dstrect' 인수를 사용하여) 업데이트 할 부분을 선택하십시오. –

+0

첫 번째 인자 인 _renderer_에서 작동하는 SDL_RenderDrawLine이 있습니다. 텍스처에 직접 선을 그리는 방법? – SAP

관련 문제