OpenGL을 배우려고 하는데 인터넷에 있는 대부분의 튜토리얼은 OpenGL 3.0 이상에 대한 가이드만 제공합니다. 그래서 내 OpenGL 버전을 찾아보았는데
glxinfo | grep OpenGL
다음을 생성합니다.
OpenGL vendor string: Intel Open Source Technology Center
OpenGL renderer string: Mesa DRI Intel(R) Ironlake Mobile
OpenGL version string: 2.1 Mesa 10.0.4
OpenGL shading language version string: 1.20
그래서 저는 다음 드라이버의 공식 웹사이트를 방문했습니다. https://01.org/linuxgraphics/
최신 버전을 설치했지만 여전히 동일한 내용이 표시됩니다. 내 하드웨어가 일부 DirectX11 렌더링을 지원한다는 것을 알고 있는데 OpenGL3.0을 지원하지 않는 이유는 무엇입니까?
아, 잊어버렸네요. 저는 Fedora 20 64비트를 사용하고 있습니다.
답변1
그 이유는 Ironlake 그래픽 아키텍처가 ivybridge 또는 sandybridge가 아니라 Clarkdale/Arrendale 세대 기술이기 때문입니다. 엄밀히 말하면 하드웨어는 확장 기능을 지원하지만 해당 기능은 해당 그래픽 드라이버에서 구현되지 않습니다.
드라이버 프로그래밍 경험이 있다면 직접 추가해 볼 수 있습니다.
http://www.phoronix.com/scan.php?page=news_item&px=MTMxMDQ
링크가 작동하지 않는 경우 관련 섹션:
"Sandy Bridge 이전의 Intel 하드웨어 세대인 Ironlake(Clarkdale/Arrandale)는 OpenGL 2.1 시대에 설계되었지만 이 하드웨어에 대해 많은 OpenGL 3.0/GL Shading Language 1.30 기능을 구현할 수 있습니다. 오늘 아침 공유하면 고객 OpenGL 이제 Sandy Bridge에 사용할 수 있는 ES 3.0(임베디드/모바일 GL 변형)이 빠르게 논의되었고 드라이버 개발자는 이전 하드웨어에 대한 관심을 빠르게 잃었습니다.
Phoronix 독자는 이 버그 보고서와 Kenneth Graunke의 1월 의견을 지적했습니다.
Team Fortress 2에는 현재 Sandy Bridge 및 최신 하드웨어에서만 지원되는 OpenGL 3.0 및 GLSL 1.30의 특정 기능이 필요합니다. 안타깝게도 Ironlake 및 이전 버전에는 아직 이 기능이 없습니다.
Ironlake에서 누락된 기능을 구현하는 것이 가능해야 합니다. 코드는 오픈 소스이고 하드웨어 문서는 웹(*)에서 무료로 사용할 수 있으므로 이론상으로는 누구든지 작업을 진행할 수 있습니다.
불행하게도 우리 팀은 최신 하드웨어를 개발하느라 바쁘기 때문에 Ironlake에 대한 GL 3.0 지원을 구현할 시간이 없을 것 같습니다... 적어도 단기적으로는 아닙니다. 정말 안타깝습니다. 그런 일이 일어나기를 바랍니다.
(*) https://01.org/linuxgraphics/documentation/driver-documentation-prms
기본적으로 Intel Linux 드라이버 개발자는 최신 하드웨어 및 기타 기능을 개발하느라 바쁘기 때문에 이전 Intel 제품에 없는 기능이 없을 수도 있습니다. 그러나 Intel은 NDA가 없는 프로그래밍 문서를 제공하므로 다른 유능한 개발자가 위 기능을 제공할 수 있어야 합니다. 이 버그 의견은 Ironlake가 Linux의 Valve 소스 엔진 게임에서 작동하지 않는 것에 대한 응답입니다.
저는 Ironlake 하드웨어를 일부 소유하고 있지만 Intel이 최신 하드웨어 지원을 위해 노력하는 것을 보고 싶습니다. Intel i965 DRI 드라이버가 소스 엔진 게임에 필요한 GL3/GLSL1.30 기능을 구현하더라도 여전히 매우 느립니다. Intel 그래픽이 통합 그래픽 성능 측면에서 실제로 큰 발전을 이룬 것은 Sandy Bridge가 되어서였습니다. Ironlake는 그다지 유능하지 않으며, 새로운(아직 출시되지 않은) 하드웨어는 더욱 흥미롭고 새로운 문을 열어줄 것입니다. 분명히 인텔은 하드웨어도 업그레이드하기를 원합니다. "
따라서 간단한 대답은 다음과 같습니다. 인텔은 이러한 기능을 구현하는 데 별로 신경을 쓰지 않거나 인센티브를 갖고 있지 않습니다. 그러나 최소한 이러한 기능을 구현하려는 의지와 기술/자금이 있다면 구현/할 수/ 있습니다. OGL 3.x 기능이 필요한 경우 Ironlake 아키텍처는 이러한 기능을 지원하지 않으며 아마도 지원하지 않을 것이므로 하드웨어를 업그레이드하는 것이 좋습니다.
답변2
저는 소스에서 직접 컴파일하는 대신 소스 RPM을 다운로드하고 .spec
RPM 파일의 구성 스위치를 수정한 후 다시 빌드하는 경향이 있습니다. 이것이 Fedora 패키지에서 유일하게 누락된 것 같습니다. 여기를 참조하세요.Fedora가 OpenGL 3.0을 출시하지 않는 이유는 무엇입니까? (인텔 하드웨어에서는 비활성화해도 됩니다).
발췌:[Mesa 사용자] IvyBridge에 OpenGL 버전 게시
Michael Cronenworth는 2013년 2월 17일 일요일 00:48 -0600에 다음과 같이 썼습니다.
Phoronix에서 IvyBridge/SandyBridge 하드웨어가 Mesa 9.0 및 9.1에서 OpenGL 3.0/3.1을 지원해야 한다고 들었습니다. 그러나 glxinfo는 다른 것을 알려줍니다.
CPU: Core i3-3225(HD4000) 배포판: Fedora 18 x86_64 OpenGL 공급업체 문자열: Intel OpenGL OpenGL 렌더러 문자열: Mesa DRI Intel(R) Ivybridge Desktop OpenGL 버전 문자열: 2.1 Mesa 9.0.1 OpenGL 셰이딩 언어 버전 문자열: 1.30
이것이 정확한가요, 아니면 Phoronix가 잘못 이해한 것인가요?
HD4000은 OpenGL 3.1을 지원합니다. 그러나 미국 특허로 인해 Mesa의 Fedora 빌드에는 OpenGL 3.0/3.1을 비활성화하는 --enable-texture-float 구성 옵션이 없습니다. 저는 변호사는 아니지만 제가 아는 한, 전세계 특허가 아니기 때문에 미국 이외의 지역에서는 --enable-texture-float를 사용하는 것이 안전하며 일부 Linux 배포판(예: Ubuntu)에서는 이렇게 합니다. 기본적으로 . Fedora 18에서 지정된 옵션을 사용하여 소스 RPM에서 Mesa를 다시 빌드하면 HD3000에서 OpenGL 3.1/shading 1.40이 활성화됩니다.
——토마스 블레치코
속도
일반적인 단계는 다음과 같습니다.
$ yumdownloader --source mesa-libGL
$ rpmdev-setuptree
$ rpm -Uvh mesa-9.2.4-1.20131128.fc19.src.rpm
$ (umask 022; sudo yum-builddep mesa-9.2.4-1.20131128.fc19.src.rpm)
$ (umask 022; sudo yum install gcc-c++)
그런 다음 mesa.spec
파일을 편집합니다.
$ vim ~/rpmbuild/SPECS/mesa.spec
.spec
그런 다음 파일 에 스위치를 추가합니다 .
## add the --enable-texture-float to configure
이제 이 .spec
파일을 사용하여 패키지를 다시 빌드하십시오.
$ rpmbuild -ba ~/rpmbuild/SPECS/mesa.spec
.rpm
모든 작업이 완료되면 이제 RPMS 디렉터리에 새로 생성된 파일이 표시됩니다.