2016-06-14 3 views
1

Photoshop 또는 Sony Vegas와 같은 일반적인 상업용 편집 소프트웨어의 구조에 대한 간단한 질문입니다.Photoshop과 같은 프로그램은 어떻게 렌더링됩니까?

이러한 응용 프로그램의 UI가 어떻게 구현되는지는 알지만 다른 고급 그래픽이 어떻게 개발되는지 잘 모르겠습니다. ?

저는 2D 및 3D 렌더링 용 OpenGL 및 DirectX와 같은 라이브러리를 잘 알고 있습니다. 나는 또한 소프트웨어 렌더링 (통합 그래픽)을 사용하여 많은 것을 할 수 있다는 것을 알고있다. 그러나이 프로그램은 어떤 옵션을 사용합니까?

Photoshop에는 GPU 가속 렌더링 옵션이 있다는 것을 알고 있습니다. 즉, 렌더링 코드를 두 번 작성해야합니다. 하나는 소프트웨어 렌더링 용이고 다른 하나는 GPU로 렌더링 용입니다. Windows 컴퓨터에서 DirectX를 사용하는 것이 일반적이지만 OpenGL은 다른 운영 체제와 호환된다는 사실을 고려하지 않았습니다.

이러한 응용 프로그램 개발자는 실제로 이러한 모든 가능성을 위해 그래픽 코드를 다시 작성하는 데 시간이 오래 걸리며 사용되는 라이브러리/간편한 변환이 있습니까?

감사합니다.

+0

Photoshop은 일반적으로 하드웨어 가용성에 따라 최적화 된 OS 통합 UI를 사용합니다. GPU 가속 옵션은 GPU 병렬 컴퓨팅으로 강력하게 향상되는 이미지 처리 용 옵션입니다. –

+1

소프트웨어 렌더링 및 통합 그래픽 칩은 같은 것이 아닙니다. 근처에도 안. –

답변

1

Photoshop과 Vegas가 어떻게 작동하는지 잘 모르겠습니다. 하지만 내가 일하는 곳에서는 여러 OS 독립적 인 이미징 응용 프로그램을 개발했습니다. 그래픽을 그리는 것을 돕기 위해 시스템 독립적이라고 주장하는 프레임 워크가 있습니다. Qt, Firemonkey는 내가 사용한 두 가지입니다. 그러나 당신이 실행중인 OS를 구별하기 위해 어디에서나 코드 또는 컴파일러 지시문을 포함시켜야하기 때문에 이것들은 큰 번거 로움입니다. 모든 그래픽 응용 프로그램에는 공통적으로 사용되는 드로잉 프리미티브가 몇 가지 있습니다.

2D 응용 프로그램의 경우 선을 그릴 수 있으면 자신의 라이브러리로 커브를 그릴 수 있습니다. 다각형을 채울 수 있다면 곡선을 채울 수도 있습니다. 또한 선을 그리고 폴리곤을 채울 수 있다면 3D로 그릴 수 있습니다. 이러한 작은 세트가 있기 때문에 이러한 모든 기능을 수행 할 수있는 자체 그래픽 컨텍스트 개체 (OOP)를 만들 수 있습니다. 그 그래픽 컨텍스트는 DirectX, GDI, OpenGL, Metal, Vulkan 또는 자신의 소프트웨어 렌더러를 사용하는 것 사이에서 전환 할 수 있습니다.

각 OS에 대해, 윈도우 객체에 핸들을 가져 오는 방법과 그리는 버퍼를 알아 내야 할 것입니다. 해당하는 경우 해당 버퍼를 그래픽 카드에 연결하는 방법을 알아야합니다.

자신의 그래픽 컨텍스트를 만드는이 방법이 잘 작동하지 않는 유일한 곳은 AA와 같은 특정 그래픽 카드 기능 또는 셰이더 프로그래밍 방식입니다. 추가 작업으로 인해 이러한 기능을 직접 프로그래밍하려하지 않았습니다. 이것이 Maya, 3d Studio Max, Blender와 같은 3D 프로그램에서 소프트웨어 렌더링으로 설정되지 않은 경우 뷰포트가 항상 좋아 보이는 이유입니다. 대부분의 그래픽 프로그래머는 자신의 그래픽 API에 의존하고 싶어합니다. 요약 그래서

:

자신에 당신이 그래픽 프로그래밍의 80 %를 할 수있는 것보다 당신이, 선을 그릴 폴리곤을 작성하고 OS 불가지론 방법으로 픽셀 데이터에 액세스 할 수 있습니다. 이 기능들은 다른 시스템에서 다르게 표시 할 수있는 자신의 라이브러리에 캡슐화 될 수 있습니다.