그래픽 앱을 위한 빠르고 정확한 픽셀 2D 드로잉 API가 필요하십니까?

StackOverflow https://stackoverflow.com/questions/67000

  •  09-06-2019
  •  | 
  •  

문제

크로스 플랫폼 그리기 프로그램을 만들고 싶습니다.내 앱을 작성하기 위한 한 가지 요구 사항은 캔버스에 대해 픽셀 수준의 정밀도를 가져야 한다는 것입니다.예를 들어, 나는 다른 사람에게 의존하기보다는 나만의 선 그리기 알고리즘을 작성하고 싶습니다.나는 어떤 형태의 앤티앨리어싱도 원하지 않습니다(다시 말하지만, 픽셀 수준 제어가 필요함). 화면에서의 사용자 상호 작용이 빠르고 반응적이기를 바랍니다(빠른 알고리즘을 작성할 수 있는 능력이 있을 때까지).

이상적으로는 Python으로 작성하거나 두 번째 선택으로 Java로 작성하고 싶습니다.최종 앱을 크로스 플랫폼으로 쉽게 만드는 기능은 필수입니다.주변에 추상화 계층을 작성할 수 있는 한 필요한 경우 다른 OS의 다른 API에 제출할 것입니다.어떤 아이디어가 있나요?

부록:그림 그리는 능력이 필요해요 화면에.알아낸 파일로 그림을 그립니다.

도움이 되었습니까?

해결책

저는 이번 주에 라이브러리 pyglet을 사용하여 Python에서 OpenGL을 사용하여 2D 그래픽을 수행하기 위한 슬라이드와 데모 코드를 함께 모았습니다.여기에서 내 콘텐츠를 볼 수 있습니다. http://tartley.com/?p=378

매우 빠릅니다(파이썬의 경우 상대적으로 말하면). 각각 약 50개의 정점이 있는 약 1,000개의 독립적으로 위치 지정되고 방향이 지정된 개체가 화면 주위를 이동하도록 관리했습니다.

이것은 이식성이 매우 뛰어납니다. 이 환경에서 제가 작성한 모든 코드는 제가 그것에 대해 생각할 필요 없이 Windows, Linux, Mac(심지어 Pypy와 같은 모호한 환경에서도)에서 작동합니다.

업데이트: 동일한 주제에 대한 최신 게시물도 많이 있습니다. http://tartley.com/?cat=27

다른 팁

그만큼 피글렛 Python용 라이브러리가 귀하의 요구에 적합할 수 있습니다.이를 통해 크로스 플랫폼 그래픽 API인 OpenGL을 사용할 수 있습니다.앤티앨리어싱을 비활성화하고 화면 영역을 버퍼나 파일로 캡처할 수 있습니다.또한 이벤트 처리, 리소스 로딩 및 이미지 조작 시스템을 사용할 수 있습니다.PIL(Python Image Library)과 연결할 수도 있고, 인기 있는 크로스 플랫폼 벡터 그래픽 라이브러리인 Cairo에도 연결할 수 있습니다.

순수한 PyOpenGL 대신 Pyglet을 언급하는 이유는 Pyglet이 사용자의 노력 없이 많은 추악한 OpenGL 항목을 투명하게 처리하기 때문입니다.

친구와 저는 현재 Pyglet을 사용하여 그리기 프로그램을 작업하고 있습니다.몇 가지 특이한 점이 있습니다. 예를 들어 OpenGL은 OS X에서 항상 이중 버퍼링되므로 모든 것을 두 번 그려야 합니다. 현재 프레임에 대해 한 번, 다른 프레임에 대해 한 번 더 그려야 합니다. 왜냐하면 디스플레이가 새로 고쳐질 때마다 뒤집어지기 때문입니다.현재 진행 상황을 볼 수 있습니다. 이 Subversion 저장소에서.(트렁크에 있는 Splatterboard.py가 실행하려는 파일입니다.) svn을 사용하지 않으신다면 최신 소스의 .zip 파일을 이메일로 보내드리겠습니다.코드를 살펴보면 자유롭게 코드를 훔칠 수 있습니다.

언어 선택이 열려 있으면 Haxe로 만든 Flash 파일이 있을 수 있습니다.Haxe는 무료이며 완전한 동적 프로그래밍 언어입니다.그런 다음 Mac, Windows 및 Linux에서 실행되는 가상 머신(예: Java, Ruby, Parrot...)인 관련 Neko가 있습니다.어떤 면에서는 새로 개선된 형태의 Flash이기 때문에 당연히 그림을 그릴 수 있습니다. http://haxe.org/

C++를 사용하려는 경우 QT의 Canvas와 QPainter가 이 작업에 매우 적합합니다.크로스 플랫폼입니다.

QT에 대한 Python 바인딩이 있지만 사용한 적이 없습니다.

Java의 경우 SWT를 사용하면 캔버스의 픽셀 수준 조작이 다소 어렵고 느리기 때문에 권장하지 않습니다.반면에 Swing의 Canvas는 꽤 훌륭하고 반응이 좋습니다.나는 AWT 옵션을 사용한 적이 없지만 아마도 거기에 가고 싶지 않을 것입니다.

나는 추천하고 싶다 wxPython

이는 아름다운 크로스 플랫폼이며 픽셀당 제어가 가능하며 마음이 바뀌면 pyglet 또는 agg와 같은 라이브러리와 함께 사용할 수 있습니다.

문서 및 데모 다운로드에서 수행하려는 작업에 대한 몇 가지 유용한 예를 찾을 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top