2014-09-02 9 views
4

저는 그래픽 프로그래밍에 익숙하지 않고 "그래픽 프로그래밍 작동 방식"을 이해하려고합니다. 지금까지 읽은 내용에서 OpenGL 및 Direct3D와 같은 API가 실제로 어디에 구현되어 있는지 명확하지 않습니다.OpenGL 및 Direct3D : 프로그래머의 관점에서 볼 때 어디서서야합니까?

드라이버가 하드웨어와 직접 대화를 나눕니다. NVIDIA/AMD 등의 쓰기 드라이버를 쓰면 다른 사람이이 API를 구현해야합니다. 하지만 Nvidia 웹 사이트에서 "OpenGL driver"를 보았습니다. OpenGL은 실제로 그래픽 하드웨어와 직접 대화하는 드라이버 수준의 API라는 의미입니까? 그래서 Nvidia/AMD는 이러한 API를 구현합니까?

OpenGL/Direct3D를 기반으로 작성된 게임 엔진 등을 이해할 수는 있지만 프로그래머 관점에서 정확히 어디서 API를 사용할 수 있는지 알 수 없습니다.

+0

내 대답보기 : http://stackoverflow.com/a/6401607/524368 – datenwolf

+1

응답 내용이 매우 자세하지만 Direct3D는 다루지 않습니다. –

답변

6

Direct3D 자체는 Microsoft에서 전적으로 구현됩니다. 그러나 Nvidia/AMD가 장치 드라이버의 일부로 구현하는 하위 API (The DXGI DDI resp. Direct3D DDI)를 지정합니다. 따라서 기본적으로 D3D는 애플리케이션 코드와 드라이버 코드 사이의 간결 함입니다. 그래픽 아키텍처의 최근 발전으로 인해 D3D가 제공하는 중간 계층이 CPU 오버 헤드를 줄이기 위해 더 얇고 얇아졌습니다.

Windows에서 OpenGL도 비슷하게 구현됩니다. Microsoft는 OpenGL API의 응용 프로그램 구현을 제공하지만 장치 드라이버 구현 인 the OpenGL Installable Client Driver으로 전달합니다.

Windows에서 OpenGL 구현의 품질은 공급 업체에 따라 다르다고 알려져 있습니다. 이러한 이유로 Firefox와 Chrome은 OpenGL API 호출을 Direct3D API 호출로 변환하여보다 안정적인 코드 패쓰를 취하는 ANGLE을 통해 WebGL을 실행합니다.

+0

정말 유익했지만 OpenGL은 어떻습니까? 마지막 문장에서 DXGI DDI가 점점 더 얇아지고 있다고 말했습니까? – Sreekar

+0

@Sreekar : 그는 Microsoft의 특정 부분 인 Direct3D를 의미한다고 생각합니다. 드라이버와 응용 프로그램 사이의 부분입니다. 추세는 앱을 가능한 한 얇게 앱과 하드웨어 사이의 추상화로 만드는 것입니다. AMD Mantle 또는 Apple Metal도 참조하십시오. – Antoine

+0

수정 됨. 다른 사람은 Linux 세부 정보를 입력해야합니다. –