2016-10-26 12 views
0

OpenGL 4.4가 설치된 Windows 7 시스템에서 X 서버를 실행합니다. 거기에서 나는 OpenGL 응용 프로그램을 시작하는 원격 컴퓨터에 ssh -Y을 보냅니다. (중요한 것은 네트워크 연결이 매우 빠르다. 나는 압축을 풀고 속도를 위해 arcfour, 복어 cbc 암호를 사용한다)SSH (GLX)를 통한 OpenGL

glxgears 실행은 매우 순조 롭지 만. 6000+ FPS를하고 있다고보고합니다.

그러나 matlab은 하드웨어 OpenGL 렌더링을 사용하지 못합니다. 필자는 문서를 읽고 OpenGL 버전 2.1이 필요하다고 언급합니다. 나는 ssh 터미널에서 glxinfo를 실행하면 저에게 말한다 :

GLX 버전 : 1.4

의 OpenGL 버전 문자열 : 1.4 (4.4.0 - 10.18.15.4279 빌드를)

I 돈 GLX의 기술적 세부 사항을 알지 못하지만 SSH를 통해 지원되는 OpenGL 버전이 1.4로 제한된다는 것을 의미합니까? GLX의 최신 버전은 OpenGL의 진보와 비교해 상당히 오래되었습니다.

+0

Stackoverflow는 시스템 설치 대답을 찾을 수있는 최적의 장소가 아닙니다. 하지만 이미 좋은 질문에 대한 답변 : http://unix.stackexchange.com/a/60822/143474 –

+0

감사. 그것은 틀린 교환에 배치를 위해 참으로 아주 도움이되고 유감스러운이었다. 나는 [unixes] (http://unix.stackexchange.com/questions/319052/opengl-on-a-remote-machine)에 후속 질문을 게시했습니다. – Paul

답변

3

나는 OpenGL을 4.4

첫 번째 문제는이 시작과 함께 윈도우 7 시스템에서 X 서버를 실행합니다. Windows의 X11 서버는 거기에서 실행되는 또 다른 프로그램이며 궁극적으로 X11 명령을 Win32 GDI 호출로 변환합니다. X11 자체는 OpenGL을 "알지 못합니다."그래서 GLX 확장이 있습니다. GLX는 재미있는 짐승이며 Windows 용 X11 서버는 모두 핵심 기능을 지원하기위한 OpenGL 명령의 기본 기본 사항만을 구현합니다.

하지만 그건 문제의 절반 밖에 ...

는 거기에서 내가는 OpenGL 응용 프로그램을 시작 원격 시스템에 -Y ssh를. 일 이런 종류의 일을

항상 모든 명령은 GLX 오피 코드 명령 스트림으로 전송해야하는 경우 간접 렌더링 호출합니다. 그리고 안타깝게도 (당신에게) GLX 명령 코드는 OpenGL-2.1까지만 지정되었지만 GLX는 OpenGL-1.4까지만 지원됩니다. OpenGL-1.5는 정점 버퍼 객체를 도입했기 때문에 간접 렌더링 컨텍스트에 많은 문제를 일으킬 수 있습니다. 따라서 GLX는 간접 렌더링을 지원하지 않을 수도 있습니다.

Linux의 경우 독점 NVidia 드라이버 및 클라이언트 라이브러리는 OpenGL-2.1을 완전히 지원합니다. 그러나 Windows에서 실행중인 X11 서버 및 클라이언트 라이브러리는 그렇지 않습니다.

+0

그것은 매우 흥미 롭습니다. 그래서 사실 GLX는 그 자체로 1.4에 국한되지는 않지만 나머지는 Windows 용으로 구현하는 데 아무도 관심이 없습니다. NVidia는 Win32 GDI를 거치지 않고도 Windows 용으로 구현할 수 있습니까? 그러나 나는 이것에 대한 요구가 거의 없다고 생각합니다. – Paul

+0

@Paul : NVidia가 Win32 용으로이를 구현하려는 의도가 있다면, 전체 X11 서버를 패치해야합니다. Windows에서 일반적으로 사용되는 X11 서버는 DDX 모듈을로드 할 수 없으므로 해당 포트로 이동합니다. GLX에 관해서는, GLX-3과 같은 표준화 제안을 Khronos에 먼저 제출해야합니다. 왜냐하면 제대로 구현 될 수 있기 때문입니다. – datenwolf

+0

@Paul : 사실, 사람들이 GL-3 이상을 사용하는 대부분의 경우, 사용 패턴은 간접 GLX를 통해 고성능으로 구현 될 수있는 것 이상입니다. 지속적으로 매핑 된 버퍼, 펜스, 드문 드문 한 텍스처 등은 많은 프로토콜 오버 헤드를 발생시킵니다. OpenGL-3 이후의 전체적인 생각은 GPU와 CPU를 더 가깝게함으로써 그리기 호출과 상태 스위치의 총량을 줄이는 것이 었습니다. 그리기 호출의 양을 최소화하면 실제로 간접 렌더링을 처리하게됩니다. 나머지는별로. – datenwolf