호환성 및 성능을 고려할 때 어떤 버전의 OpenGL을 코딩해야합니까? [닫은]


19

OpenGL 사양이 업데이트되면 기능 만 추가됩니다. 이론적으로 코어 및 호환성 프로파일을 지원하는 최신의 가장 큰 하드웨어는 아주 오래된 OpenGL1.1 코드를 잘 실행해야합니다. 이것은 사실로 밝혀졌습니다. 나는 OpenGL1.1을 배우는 데 12 개월을 보냈고 그것에 대해 상당히 이해했다.

멋진 OpenGL4.2 서적 중 하나의 장을 읽었습니다. 필자가 사용하는 거의 모든 기능은 더 이상 사용되지 않으며 (예 : 표시 목록) 이러한 모든 작업을 수행하는 더 좋은 방법이 있다고 가정 할 수 있습니다.

모든 최신 하드웨어가 1.1을 완전히 지원할 수 있다고 생각하자. 1.1 1992 년 내가 어렵게 코딩 아니에요 출시 된 단지 20 옛 PC를 지원합니다. :-p 대부분의 게이머가 5 년 정도 된 중형 범위의 하드웨어를 사용한다고 가정하는 것이 합리적이라고 생각합니다.

새로운 방법은 보편적으로 두 가지 중 하나가되도록 설계되었다고 생각합니다. 성능 향상 또는 코딩 용이성. 나는 어딘가에서 그것의 결코 읽지 않는다는 것을 읽었다! XD

~ 5 년 전 하드웨어에서 가장 널리 지원되는 OpenGL 버전은 무엇입니까? 이러한 고려 사항을 고려할 때 어떤 버전이 가장 적합합니까?

답변:


19

귀하의 고려 사항을 감안할 때 각 버전에 대한 OpenGL 사양이 출시 된 시점을 확인하고 내가 본 내용에서 전반적인 통찰력을 얻었습니다.

FBO, VAO 등을 소개 한 OpenGL 3은 거의 5 년 전에 2008 년 7 월 11 일에 출시되었습니다. 물론, 그 날짜 이후의 모든 카드가 OpenGL 3을 즉시 사용할 수 있다고 기대할 수는 없습니다.

Steam 하드웨어 설문 조사를 살펴보면 40 %는 DirectX 10입니다. OpenGL 3는 유사한 그래픽 카드가 필요했기 때문에 대부분의 DirectX 10 카드는 최소한 OpenGL 3을 실행할 수 있다고 가정하는 것이 안전합니다.

OpenGL 3은 GeForce 8xxx 시리즈까지 모든 카드에서 지원되며, 올바르게 기억하면 꽤 인기가 있습니다. 주목할 점은 Intel HD 2000 및 3000 Graphics (Sandy bridge)가 최대 OpenGL 3 만 지원한다는 점입니다. 대상을 지정할 계획이라면 명심하십시오.

결론 : OpenGL 3은 좋은 선택입니다. 또한 대상 고객에 따라 대부분의 게이머가 평균보다 하드웨어가 더 우수하다는 점을 기억하십시오.


이것은 좋은 대답입니다. 내가 찾던 일종의 통찰력이었습니다.
— Suds

3
"또한 주목할만한 점은 인텔 HD 2000 및 3000 그래픽 (샌디 브리지)이 OpenGL 3까지만 지원한다는 점입니다."참고 : 인텔은 신경 쓰지 않기 때문에 GL 3.1 만 지원합니다. 그리고 인텔이기 때문에 "지원"은 한알의 소금으로 가져와야합니다. 그들의 하드웨어 는 3.3을 지원할 수 있지만 노출 시키지는 않습니다 (다시 신경 쓰지 않기 때문에). 인텔 하드웨어에서 OpenGL 3.x를 사용하지 않는 것이 좋습니다. 실제로 인텔 하드웨어를 기반으로 한 쉐이더 기반의 작업은 피하고 싶습니다.
— Nicol Bolas

그런 다음 질문이 제기됩니다. 인텔 하드웨어 시장은 얼마나 포화 상태입니까? 인텔 그래픽에 신경 쓰지 않고 OpenGL3.x를 사용하는 것이 가치가 있습니까? 아니면 실제로 중요한 인텔 그래픽 하드웨어가 충분한가?
— Suds

1
한 가지 문제는 OSX입니다. 최신 릴리스 10.7.x는 OpenGL 3.2 만 지원 하고 10.6.x는 3.0 (또는 2.x) 만 지원합니다. 10.5.x는 카드에 따라 크게 다르며 1.3, 1.5 및 2.0이 가능합니다. 사용자가 업데이트를 위해 Apple에 돈을 지불하지 않는 한 이러한 시스템은 OpenGL 버전에서 영원히 멈출 것입니다. OpenGL을 업데이트 할 OSX 용 비디오 카드 드라이버 업데이트 나 업데이트는 없습니다. 다른 문제는 넷북에 사용되는 도그 리 임베디드 인텔 칩셋 중 일부입니다. 그들 중 다수는 OpenGL 2.0 이상입니다.
— David C. Bishop

그리고 당신은 ... 아직도의 OpenGL 1.1을 흔들 된 3DS를 가지고
— kirbyfan64sos

8

여기부터 시작하겠습니다 : http://store.steampowered.com/hwsurvey

예를 들어, 4cpus를 대상으로하는 경우 45 %의 사용자 만 공격하지만 2로 작업하면 90 %에 근접하게됩니다.


1
OpenGL은 어디에서 보았습니까? DirectX 만 볼 수 있습니다 (Windows 만 타겟팅하려는 경우 주목할만한 흥미로운 내용).
— DMan

그래픽 카드 분석을 기반으로 합법적 인 작업을 수행 한 것 같습니다
— Jimmy

예-OpenGL에 대해서는 아무것도 보지 못했지만 카드 모델에서 얻을 수 있습니다. 또는 DirectX 버전과 OpenGL 사이에는 상당한 양의 상관 관계가 있다고 생각합니다.
— salmonmoose

3

대답은 언급 한 기간 내에 출시 된 인텔 그래픽에서 실행해야하는지 여부에 따라 다릅니다.

그렇다면 OpenGL 2.1 (또는 1.5)로 제한하십시오. 그렇지 않으면 3.x가 합리적입니다.

예, 이전 버전의 OpenGL은 계속 실행되며 한 관점에서 보면 더 단순 해 보일 수 있습니다. 상황이 구부러지는 곳은 너무 쉽게 지원하지 않는 일을하려고 할 때입니다. OpenGL 1.1은 어려운 방법 일뿐만 아니라 특정 결과를 얻으려는 경우 종종 불가능한 방법입니다.


왜 1.1이 종종 불가능한 지에 대한 예를 추가해야합니다. 1.1 기능과 쉽게 관련 될 수있는 방법 중 하나는 다중 블렌드 패스입니다. FBO가없고 컴포넌트 텍스처 당 8 비트로 제한되기 때문에 블렌드 패스가 쌓이면 정밀도가 떨어지기 시작합니다. 3/4/5 패스를 사용하면 최종 결과가 16 비트 또는 8 비트 그래픽처럼 보이기 시작합니다. 그러나 1.1 기능 세트로 더 높은 수준의 효과 (기본 다중 텍스처링은 우리 모두에게 익숙한 것임)를 시뮬레이션하기 위해 여러 패스가 필요한 경우가 많습니다.
— Maximus Minimus 2016 년

인텔 HD 그래픽 (Sandy / Ivy Bridge)조차도 OpenGL 3.1 만 지원하며 1 년 전입니다. 저렴한 (또는 저전력) 랩톱을 지원할지 여부가 결정됩니다.
— Steve Howard

2
@SteveHoward : 인텔 HD 그래픽의 OpenGL 4. 지원할 수있는 소스
— 야누스 Troelsen

그 기사는 제가 의견을 게시한지 약 3 개월이 지난 후입니다.
— Steve Howard

1

첫째, 디스플레이 목록과 같은 OpenGL 1.1은 호환성 프로파일 (일반적으로 그러한 경우)이있는 경우 여전히 새로운 컨텍스트에서 작동합니다. 유일한 문제는 콘솔 특정 그래픽 라이브러리 중 하나 인 OpenGL ES (일반적으로 OpenGL ES와 유사한 OpenGL이 제거됨) 또는 WebGL (어쨌든 상당히 많은 재 작업이 필요함)으로 포팅 할 것으로 예상되는 경우입니다.

개인적으로 정점 / 조각 셰이더와 VBO를 사용하는 것이 좋습니다. 그들은 꽤 오랫동안 주변에 있었고 훌륭한 성능 향상을 제공합니다. 클래스에서 함수를 래핑하면 간단한 폴백을 제공 할 수도 있습니다.

정점 배열 객체와 같은 것을 모방 할 수도 있습니다.


0

5 년 된 하드웨어를 사용하는 일부 사람들은 여전히 ​​XP를 사용하고 있습니다. 이는 DirectX 10 또는 OpenGL 3으로 코딩조차 할 수 없음을 의미합니다. OpenGL 3에는 프레임 버퍼와 같은 많은 이점이 있습니다. 솔직히, 나는 당신이 그 기능들을 포함시킬 수 있도록 당신의 시스템 요구 사항을 조금만 부풀려 줄 것이다.


8
-1 : "5 년 된 하드웨어로 일부 사람들은 여전히 ​​XP를 사용하고 있습니다. 따라서 DirectX 10 또는 OpenGL 3으로 코딩 할 수도 없습니다." 사실이 아니다. OpenGL 3.x는 XP에서 잘 작동 합니다. API / 드라이버 때문에 XP에서 제한되는 것은 D3D10뿐입니다. 하드웨어와 관련이 없습니다.
— Nicol Bolas

0

3d 소프트웨어는 "기본"그래픽 API 버전과 "최신 및 가장 큰"API 버전 모두에 대한 코드 경로를 갖는 것이 일반적입니다.

일반적인 기본 그래픽 버전은 D3D9 및 OpenGL 2.1 / GLSL 120입니다. 이전 하드웨어가 지원하지 않기 때문에 지오메트리 쉐이더가 모두 누락되었습니다.

또 다른 기본 옵션은 ANGLE이며, 이는 GLES 2.0과 D3D9, 데스크톱 OpenGL 및 모바일 GLES 2.0에서 실행되는 EGL입니다. Chrome 및 Firefox에서 Google 크롬 및 webgl의 백엔드입니다.

http://code.google.com/p/angleproject/

선택한 "최신 및 최고"버전은 더 어렵습니다. 최신 API 및 하드웨어를 대상으로할수록 더 나은 기능을 지원할 수 있지만 최신 하드웨어에서만 가능합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.