게임 개발자는 왜 Windows를 선호합니까?


396

OpenGL이 크로스 플랫폼 임에도 불구하고 DirectX가 OpenGL보다 쉽고 낫습니까? 왜 Windows 용 Linux처럼 강력한 Linux 용 게임이 보이지 않습니까?


55
틀린 전제-게임 개발자들이 창문을 선호한다는 증거는 어디에 있습니까? @ user17674가 더 정확하게 생각합니다. 플랫폼을 개발하여 더 많이 팔고 더 많은 돈을 벌 수 있기를 원합니다
Rory Alsop

258
바이러스 개발자는 Windows를 선호합니다. 그것은 모든 사용자 기반에 관한 것입니다.
CesarGon

4
Windows 프로그래머가 OpenGL보다 DirectX를 선호하는 이유는 아마도 더 흥미로운 질문 일 것입니다. 아래의 Carmack 인터뷰 링크에서 알 수 있듯이 DX는 혐오를당했습니다. Xbox와 최신 재 작성이 더 대중화 될 때까지 MS가 충분한 사용자를 지원할 수 있도록하는 방법을 아는 것이 흥미로울 것입니다. 아니면 사람들이 그것에 갇혀있을 정도로 항상 좋을 수도 있습니다.
CodexArcanum

100
사람들은 왜 은행을 털나요? 그게 돈이있는 곳이기 때문입니다 .
GrandmasterB

7
@CesarGon : 사용자 기반 때문일뿐만 아니라 개발의 용이성 때문입니다.
Giorgio

답변:


1154

여기에 많은 답변이 정말 좋습니다. 그러나 OpenGLDirect3D (D3D) 문제를 해결해야합니다. 그리고 그것은 ... 역사 수업이 필요합니다.

시작하기 전에 Direct3D 보다 OpenGL 에 대해 훨씬 더 많이 알고 있습니다. 나는 평생 D3D 코드를 작성하지 않았으며 OpenGL에 대한 자습서를 작성했습니다. 제가 말하려는 것은 편견의 문제가 아닙니다. 그것은 단순히 역사의 문제입니다.

갈등의 탄생

어느 날 90 년대 초반 Microsoft는 주변을 둘러 보았습니다. 그들은 SNESSega Genesis 가 훌륭하고 많은 액션 게임을 실행하는 것을 보았습니다 . 그리고 그들은 DOS 를 보았습니다 . 개발자는 콘솔 게임과 같은 DOS 게임을 코딩했습니다. 그러나 SNES 게임을 만든 개발자가 사용자의 하드웨어를 알고있는 콘솔과 달리 DOS 개발자는 여러 가지 가능한 구성을 작성해야했습니다. 그리고 이것은 소리보다 다소 어렵습니다.

그리고 Microsoft는 더 큰 문제인 Windows를 가지고있었습니다. 개발자가 무엇이든 할 수있는 DOS와 달리 Windows는 하드웨어를 소유하고 싶어했습니다. 응용 프로그램 간 협력을 위해서는 하드웨어 소유가 필요합니다. 협력은 게임 개발자가 싫어하는 데 사용되는 소중한 하드웨어 리소스를 사용하기 때문에 게임 개발자가 싫어하는 것입니다.

Windows에서 게임 개발을 촉진하기 위해 Microsoft는 낮은 수준의 균일 한 API가 필요했지만 Windows에서 속도를 늦추지 않고 Windows에서 실행했으며 대부분의 크로스 하드웨어 였습니다. 모든 그래픽, 사운드 및 입력 하드웨어를위한 단일 API.

따라서 DirectX 가 탄생했습니다.

3D 가속기는 몇 달 후에 태어났습니다. 그리고 마이크로 소프트는 어려움에 부딪쳤다. DirectX의 그래픽 구성 요소 인 DirectDraw는 2D 그래픽 만 처리했습니다. 그래픽 메모리 할당 및 서로 다른 할당 된 메모리 섹션간에 비트 블리트 수행.

그래서 마이크로 소프트는 미들웨어의 비트를 구입하고 그것이 Direct3D를 버전 3으로 그것을 유행 보편적으로 욕. 그리고 합당한 이유가 있습니다. D3D v3 코드를 보는 것은 언약궤를 쳐다 보는 것과 같습니다.

Id Software의 Old John Carmack은 그 쓰레기를 한 번 살펴보면서 "나사를 돌려라!" OpenGL이라는 다른 API를 작성하기로 결정했습니다.

마이크로 소프트의 많은 짐승의 또 다른 부분은 Windows 용 OpenGL 구현에서 SGI와 함께 일하는 데 바빴다. 여기서 아이디어는 일반적인 GL 응용 프로그램 개발자 인 워크 스테이션 응용 프로그램에 적용되었습니다. CAD 도구, 모델링, 그런 것. 게임은 마음에 가장 먼 곳이었습니다. 이것은 주로 Windows NT 였지만 Microsoft는 Windows NT에도 추가하기로 결정했습니다.

Microsoft는 워크 스테이션 개발자를 Windows에 유인하기위한 방법으로 새로운 3D 그래픽 카드에 대한 액세스 권한을 부여하기로 결정했습니다. Microsoft는 Installable Client Driver 프로토콜을 구현했습니다. 그래픽 카드 제조업체는 하드웨어 기반의 소프트웨어로 Microsoft의 소프트웨어 OpenGL 구현을 무시할 수 있습니다. 코드는 사용 가능한 하드웨어 OpenGL 구현을 자동으로 사용할 수 있습니다.

초기에는 소비자 수준의 비디오 카드가 OpenGL을 지원하지 않았습니다. Carmack이 SGI 워크 스테이션에서 Quake를 OpenGL (GLQuake)로 포팅하는 것을 막지 못했습니다. GLQuake readme에서 읽을 수있는 것처럼 :

이론적으로, glquake는 텍스처 객체 확장을 지원하는 모든 호환 OpenGL에서 실행되지만 필요한 모든 것을 가속화하는 매우 강력한 하드웨어가 아니라면 게임 플레이가 허용되지 않습니다. 소프트웨어 에뮬레이션 경로를 거쳐야하는 경우 성능은 초당 1 프레임 미만일 것입니다.

현재 (97 년 3 월), glquake를 합리적으로 수행 할 수있는 유일한 표준 opengl 하드웨어는 intergraph realizm인데, 이는 매우 비싼 카드입니다. 3dlabs의 성능이 크게 향상되었지만 사용 가능한 드라이버로는 여전히 재생하기에 충분하지 않습니다. 글 린트 및 미디어 보드 용 현재 3dlabs 드라이버 중 일부는 전체 화면 실행에서 나갈 때 NT와 충돌 할 수 있으므로 3dlabs 하드웨어에서 glquake를 실행하지 않는 것이 좋습니다.

3dfx는 glquake에 필요한 모든 것을 구현하는 opengl32.dll을 제공했지만 전체 opengl 구현은 아닙니다. 다른 OpenGL 응용 프로그램은 작동하지 않을 수 있으므로 기본적으로 "glquake 드라이버"를 고려하십시오.

이것은 miniGL 드라이버의 탄생이었습니다. 하드웨어가 하드웨어에서 대부분의 OpenGL 기능을 구현할 수있을만큼 강력 해짐에 따라 결국 전체 OpenGL 구현으로 발전했습니다. nVidia는 전체 OpenGL 구현을 제공 한 최초의 기업입니다. 다른 많은 벤더들이 어려움을 겪었고, 이것이 개발자들이 Direct3D를 선호하는 이유 중 하나입니다. 더 광범위한 하드웨어에서 호환되었습니다. 결국 nVidia와 ATI (현재 AMD) 만 남았으며 둘 다 OpenGL 구현이 양호했습니다.

OpenGL 어센 던트

따라서 스테이지는 Direct3D와 OpenGL로 설정됩니다. D3D v3이 얼마나 나쁜지를 고려하면 정말 놀라운 이야기입니다.

ABB (OpenGL Architectural Review Board)는 OpenGL 유지 관리를 담당하는 조직입니다. 이들은 여러 확장을 발행하고 확장 저장소를 유지 보수하며 새 버전의 API를 작성합니다. ARB는 여러 그래픽 산업 플레이어와 일부 OS 제조업체로 구성된위원회입니다. Apple과 Microsoft는 여러 번 ARB의 회원이었습니다.

3Dfx는 Voodoo2와 함께 제공됩니다. 이것은 다중 텍스처링을 수행 할 수있는 최초의 하드웨어이며 OpenGL은 이전에는 할 수 없었습니다. 3Dfx는 OpenGL과 강력하게 반대하지만 차세대 멀티 텍스처링 그래픽 칩 (TNT1) 제조업체 인 엔비디아는이를 좋아했습니다. 따라서 ARB는 GL_ARB_multitexture라는 확장을 발행하여 다중 텍스처링에 액세스 할 수있게되었습니다.

한편 Direct3D v5가 나옵니다. 이제 D3D는 고양이가 구토하는 것이 아니라 실제 API 가되었습니다 . 문제? 다중 텍스처링이 없습니다.

죄송합니다.

사람들이 멀티 텍스쳐링을 많이 사용하지 않았기 때문에 이제는 원하는만큼 아프지 않을 것입니다. 직접 아닙니다. 멀티 텍스쳐링은 성능을 상당히 저하 시켰으며, 많은 경우 멀티 패스와 비교할 때 가치가 없었습니다. 물론 게임 개발자는 게임이 멀티 텍스쳐링이 없었던 구형 하드웨어에서 작동하도록하는 것을 좋아합니다.

따라서 D3D는 추방되었다.

시간이 지남에 따라 NVIDIA는 GeForce 256 (GeForce GT-250이 아닌 최초의 GeForce)을 배포하여 향후 2 년간 그래픽 카드 경쟁이 거의 끝났습니다. 주요 판매 포인트는 하드웨어에서 정점 변환 및 조명 (T & L)을 수행하는 기능입니다. 뿐만 아니라 NVIDIA는 OpenGL을 매우 좋아하여 T & L 엔진이 효과적으로 OpenGL 이었습니다 . 거의 문자 그대로; 내가 이해하는 것처럼 일부 레지스터는 실제로 OpenGL 열거자를 직접 값으로 사용했습니다.

Direct3D v6이 나옵니다. 결국 다중 텍스처이지만 하드웨어 T & L은 없습니다. OpenGL은 256 이전에 소프트웨어로 구현되었지만 항상 T & L 파이프 라인을 가지고있었습니다. 따라서 NVIDIA는 소프트웨어 구현을 하드웨어 솔루션으로 변환하기가 매우 쉬웠습니다. D3D가 마침내 하드웨어 T & L을 지원할 때까지 D3D v7까지는 없었습니다.

Shaders의 새벽, OpenGL의 황혼

그런 다음 GeForce 3이 나왔습니다. 동시에 많은 일들이 일어났습니다.

마이크로 소프트는 다시는 늦지 않기로 결정했다. 따라서 엔비디아가하고있는 일을보고 그 사실을 복사 한 것이 아니라 그들에게 가서 대화하는 놀라운 위치를 차지했습니다. 그리고 그들은 사랑에 빠졌고 작은 콘솔을 가지고있었습니다.

혼란스러운 이혼이 뒤 따랐다. 그러나 그것은 또 다른 시간입니다.

이것이 PC의 의미는 GeForce 3이 D3D v8과 동시에 나왔다는 것입니다. 그리고 GeForce 3가 D3D 8의 쉐이더에 어떤 영향을 미치는지 알기가 어렵지 않습니다. Shader Model 1.0의 픽셀 쉐이더는 NVIDIA의 하드웨어에 매우 고유했습니다. NVIDIA의 하드웨어를 추상화하려는 시도는 없었습니다. SM 1.0은 GeForce 3의 기능입니다.

ATI가 Radeon 8500과 함께 성능 그래픽 카드 경쟁에 뛰어 들기 시작했을 때 문제가있었습니다. 8500의 픽셀 처리 파이프 라인은 NVIDIA의 것보다 강력했습니다. 따라서 Microsoft는 Shader Model 1.1을 발행했는데 기본적으로 "8500의 기능"입니다.

그것은 D3D의 실패처럼 들릴 수 있습니다. 그러나 실패와 성공은 학위의 문제입니다. 그리고 OpenGL-land에서 서사시의 실패가 일어나고있었습니다.

NVIDIA는 OpenGL을 좋아했기 때문에 GeForce 3가 출시 될 때 수많은 OpenGL 확장 기능을 발표했습니다. 독점적 인 OpenGL 확장 : NVIDIA 전용. 당연히 8500이 나타 났을 때 그것들 중 어느 것도 사용할 수 없었습니다.

적어도 D3D 8 랜드에서는 ATI 하드웨어에서 SM 1.0 셰이더를 실행할 수 있습니다. 물론, 8500의 차가움을 이용하려면 새 셰이더를 작성해야하지만 최소한 코드 는 효과가 있었습니다.

OpenGL에서 Radeon 8500에 어떤 종류의 셰이더를 갖기 위해 ATI는 여러 OpenGL 확장을 작성해야했습니다. 독점적 OpenGL 확장 : ATI 전용. 따라서 셰이더 를 사용 하려면 NVIDIA 코드 경로와 ATI 코드 경로가 필요했습니다 .

이제 "OpenGL을 최신 상태로 유지하는 것이 OpenGL ARB의 역할은 무엇입니까?"라고 물을 수 있습니다. 많은위원회가 종종 끝나는 곳 : 멍청한 행동.

위의 ARB_multitexture는이 모든 것을 깊이 고려하기 때문에 위에서 언급했습니다. ARB는 (외부인의 관점에서) 쉐이더의 아이디어를 완전히 피하고 싶었습니다. 그들은 고정 기능 파이프 라인에 충분한 구성 기능을 제공하면 셰이더 파이프 라인의 기능과 같을 수 있다고 생각했습니다.

따라서 ARB는 확장 후 확장을 릴리스했습니다. "texture_env"라는 단어가 포함 된 모든 확장은이 에이징 디자인을 패치하려는 또 다른 시도였습니다. 레지스트리를 확인하십시오. ARB와 EXT 확장 사이 에는이 확장 중 8 개가 있습니다. 많은 사람들이 OpenGL 코어 버전으로 승격되었습니다.

현재 Microsoft는 ARB의 일부였습니다. 그들은 D3D 9가 맞을 때쯤 떠났다. 그래서 그들은 어떤 식 으로든 OpenGL을 방해하려고 노력했을 가능성이 있습니다. 나는 두 가지 이유로이 이론을 개인적으로 의심한다. 하나는 다른 ARB 회원들로부터 도움을 얻어야했을 것입니다. 각 회원은 한 표만 얻었 기 때문입니다. 그리고 가장 중요한 두 가지는 ARB가 문제를 해결하기 위해 Microsoft의 도움을 필요로하지 않았다는 것입니다. 그에 대한 추가 증거를 볼 수 있습니다.

결국 ATI와 NVIDIA (능동적 인 멤버 모두)의 위협을 받고있는 ARB는 결국 실제 어셈블리 스타일 쉐이더를 제공 할 정도로 오랫동안 머리를 뽑아 냈습니다.

더 바보 같은 것을 원하십니까?

하드웨어 T & L. OpenGL이 먼저 가지고 있었던 것 . 글쎄요. 하드웨어 T & L에서 최대한의 성능을 얻으려면 꼭짓점 데이터를 GPU에 저장해야합니다. 결국, 실제로 정점 데이터를 사용하려는 것은 GPU입니다.

D3D v7에서 Microsoft는 Vertex Buffers라는 개념을 도입했습니다. 이들은 정점 데이터를 저장하기 위해 GPU 메모리를 할당합니다.

OpenGL이 언제 이와 동등한 지 알고 싶습니까? 오, NVIDIA는 OpenGL (독점적 인 NVIDIA 확장 인 경우)을 좋아하는 GeForce 256이 처음 출시 될 때 정점 배열 범위 확장을 발표했습니다. 그러나 ARB는 언제 비슷한 기능을 제공하기로 결정 했습니까?

2 년 후 . 정점 및 프래그먼트 셰이더 (D3D 언어의 픽셀)를 승인 한 후 였습니다 . ARB가 GPU 메모리에 정점 데이터를 저장하기위한 크로스 플랫폼 솔루션을 개발하는 데 시간이 오래 걸렸습니다. 다시 말하지만 하드웨어 T & L 최대 성능을 달성하는 데 필요한 것 입니다.

그들 모두를 망칠 하나의 언어

그래서 OpenGL 개발 환경은 한동안 파괴되었습니다. 크로스 하드웨어 셰이더, 크로스 하드웨어 GPU 버텍스 스토리지가 없으며 D3D 사용자는 둘 다 즐겼습니다. 더 나빠질 수 있습니까?

당신은 ... 그렇게 말할 수 있습니다. 3D Labs를 입력하십시오 .

그들이 누구냐고 물어봐도 될까요? 그들은 OpenGL의 진정한 살인자라고 생각하는 쓸모없는 회사입니다. 물론 ARB의 일반적인 부적절 성으로 인해 OpenGL은 D3D를 소유해야했을 때 취약했습니다. 그러나 3D 랩은 아마도 OpenGL의 현재 시장 상태에 대한 가장 큰 이유 일 것입니다. 그것들을 유발시키기 위해 무엇을 할 수 있었습니까?

그들은 OpenGL Shading Language를 디자인했습니다.

3D Labs는 죽어가는 회사였습니다. 엔비디아는 워크 스테이션 시장에 대한 압박이 가중되면서 고가의 GPU를 소외시키고있었습니다. NVIDIA와 달리 3D Labs는 주류 시장에 존재하지 않았습니다. 엔비디아가 이기면 죽었다.

그들이 한 일.

따라서 제품을 원하지 않는 세계에서 관련성을 유지하기 위해 3D Labs는 "OpenGL 2.0"이라는 프레젠테이션을하는 게임 개발자 컨퍼런스에 참가했습니다. 이것은 OpenGL API를 완전히 처음부터 다시 쓴 것입니다. 그리고 그것은 말이됩니다; 당시 OpenGL의 API 에는 많은 균열이있었습니다 (참고 : 그 균열은 여전히 ​​존재합니다). 텍스처 로딩과 바인딩이 어떻게 작동하는지 살펴보십시오. 세미 아칸입니다.

그들의 제안 중 일부는 음영 언어였습니다. 당연히. 그러나 현재 크로스 플랫폼 ARB 확장과 달리 음영 언어는 "고수준"입니다 (C는 음영 언어에 대해 높은 수준입니다).

이제 Microsoft는 자체적 인 고급 음영 언어를 연구하고있었습니다. 그것들은 마이크로 소프트의 모든 상상에서 HLSL (High Level Shading Language)이라고 불렀습니다. 그러나 그것들은 언어에 대한 근본적으로 다른 접근법이었습니다.

3D Labs의 셰이더 언어의 가장 큰 문제는 내장 언어라는 것이 었습니다. HLSL은 Microsoft에서 정의한 언어였습니다. 그들은 그것을 위해 컴파일러를 출시했으며, Shader Model 2.0 (또는 이후 쉐이더 모델) 어셈블리 코드를 생성했습니다. D3D v9 일 동안 HLSL은 D3D에 의해 직접 만지지 않았습니다. 멋진 추상화 였지만 순전히 선택 사항이었습니다. 그리고 개발자는 항상 컴파일러를 뒤져서 최대 성능을 위해 출력을 조정할 수있는 기회를 가졌습니다.

3D Labs 언어에는 그러한 기능 이 없었 습니다. 드라이버에게 C와 같은 언어를 제공하고 셰이더를 생성했습니다. 이야기의 끝. 어셈블리 셰이더가 아닌 다른 무언가를 공급하는 것이 아닙니다. 셰이더를 나타내는 실제 OpenGL 객체입니다.

이것이 의미하는 바는 OpenGL 사용자가 단지 어셈블리와 같은 언어를 컴파일하는 개발자들에게 열려 있음을 의미합니다. 새로 버그 화 된 OpenGL Shading Language (GLSL)에서 컴파일러 버그가 만연해 있었습니다. 더 나쁜 것은 셰이더가 여러 플랫폼에서 올바르게 컴파일되도록 (임의의 묘기가 아님) 계속 해서 오늘날 의 옵티 마이저 에 노출 것입니다. 그들이 할 수있는만큼 최적이 아닙니다.

이것이 GLSL에서 가장 큰 결함 이었지만 유일한 결함은 아닙니다. 으로 까지 .

D3D 및 OpenGL의 이전 어셈블리 언어에서는 정점 및 조각 (픽셀) 셰이더를 혼합하고 일치시킬 수 있습니다. 동일한 인터페이스와 통신하는 한 호환 가능한 조각 쉐이더와 함께 모든 버텍스 쉐이더를 사용할 수 있습니다. 그리고 그들이 수용 할 수있는 비 호환성 수준도있었습니다. 버텍스 셰이더는 프래그먼트 셰이더가 읽지 않은 출력을 작성할 수 있습니다. 기타 등등.

GLSL에는 그중 아무것도 없었습니다. 정점 및 프래그먼트 셰이더는 3D Labs에서 "프로그램 객체"라고하는 것과 함께 융합되었습니다. 따라서 정점 및 프래그먼트 프로그램을 공유하려면 여러 프로그램 오브젝트를 빌드해야합니다. 그리고 이것은 두 번째로 큰 문제를 일으켰습니다.

3D Labs는 그들이 영리하다고 생각했습니다. 그들은 GLSL의 컴파일 모델을 C / C ++에 기반했다. .c 또는 .cpp를 가져 와서 객체 파일로 컴파일합니다. 그런 다음 하나 이상의 객체 파일을 가져 와서 프로그램에 연결합니다. 이것이 GLSL이 컴파일하는 방식입니다. 셰이더 (정점 또는 조각)를 셰이더 객체로 컴파일합니다. 그런 다음 해당 쉐이더 객체를 프로그램 객체에 넣고 함께 연결하여 실제 프로그램을 형성합니다.

이것이 주요 셰이더가 호출 할 수있는 추가 코드를 포함하는 "라이브러리"셰이더를 갖는 것과 같은 멋진 아이디어를 허용했지만 실제로 의미는 셰이더가 두 번 컴파일되었다는 것 입니다. 컴파일 단계에서 한 번, 연결 단계에서 한 번. 특히 NVIDIA의 컴파일러는 기본적으로 컴파일을 두 번 실행하는 것으로 알려져 있습니다. 어떤 종류의 객체 코드 중개자를 생성하지 않았습니다. 방금 한 번 컴파일하고 답변을 버린 다음 링크 타임에 다시 컴파일했습니다.

따라서 정점 셰이더를 두 개의 다른 조각 셰이더에 연결하려는 경우에도 D3D보다 훨씬 더 많은 컴파일 작업을 수행해야합니다. 특히 C와 같은 언어의 컴파일은 프로그램 실행의 시작이 아닌 오프라인 에서 모두 수행 되었으므로 .

GLSL에 다른 문제가있었습니다. ARB가 결국 언어를 승인하고 통합했기 때문에 3D 연구소에 책임을지는 것은 아마도 잘못된 것 같습니다 (하지만 "OpenGL 2.0"이니셔티브의 다른 것들은 없습니다). 그러나 그것은 그들의 생각이었습니다.

그리고 여기 정말 슬픈 부분이 있습니다 : 3D Labs가 옳았습니다 (주로). GLSL은 당시 HLSL과 같은 벡터 기반 음영 언어가 아닙니다. 이는 3D Labs의 하드웨어가 스칼라 하드웨어 (현대 NVIDIA 하드웨어와 유사) 였지만 많은 하드웨어 제조업체가 하드웨어와 함께 사용하는 방향에 궁극적으로 맞았 기 때문입니다.

그들은 "고수준"언어를위한 온라인 컴파일 모델을 가지고 갈 권리가 있었다. D3D는 결국 그로 전환했습니다.

문제는 3D 랩이 제때 에 잘못되었다는 것이 었습니다 . 그리고 미래를 너무 일찍 소환하려고 노력하고 미래에 대비하려고 노력하면서 그들은 현재를 버렸습니다 . OpenGL이 항상 T & L 기능을 사용할 수 있었던 방식과 비슷합니다. OpenGL의 T & L 파이프 라인은 하드웨어 T & L보다 여전히 유용 했지만 GLSL은 전 세계가이를 따라 잡기 전에 책임을졌습니다.

GLSL은 지금 좋은 언어 입니다. 그러나 당분간? 끔직했다. 그리고 OpenGL이 어려움을 겪었습니다.

Apotheosis로 떨어지는

3D Labs가 치명적인 타격을 입었다 고 유지하면서 ARB 자체가 관의 마지막 못을 박았습니다.

이것은 당신이 들어 본 이야기입니다. OpenGL 2.1 당시에는 OpenGL에 문제가 발생했습니다. 레거시 크래프트 가 많았습니다 . 더 이상 API를 사용하기가 쉽지 않았습니다. 작업을 수행하는 5 가지 방법이 있었으며 어느 것이 가장 빠른지 알 수 없었습니다. 간단한 자습서를 통해 OpenGL을 "학습"할 수 있지만 실제 성능과 그래픽 성능을 제공하는 OpenGL API는 실제로 배우지 못했습니다.

따라서 ARB는 OpenGL의 또 다른 재발 명을 시도하기로 결정했습니다. 이것은 3D Labs의 "OpenGL 2.0"과 유사하지만 ARB가 뒤에 있기 때문에 더 좋습니다. 그들은 그것을 "롱 피크"라고 불렀습니다.

API를 개선하는 데 시간이 걸리는 것이 왜 그렇게 나쁜가요? 마이크로 소프트가 스스로 취약 해 졌기 때문에 이것은 나빴다. 참조 비스타 전환의 시간이었다.

Vista를 통해 Microsoft는 디스플레이 드라이버에 필요한 변경 사항을 적용하기로 결정했습니다. 그들은 그래픽 메모리 가상화 및 기타 여러 가지를 위해 드라이버를 OS에 제출하도록 강요했습니다.

마이크로 소프트가 D3D 10을 비스타 (및 그 이상)로만 간주 한 것은 사실이다. D3D 10 을 지원 하는 하드웨어가 있어도 Vista를 실행하지 않고도 D3D 10 응용 프로그램을 실행할 수 없었습니다.

Vista를 기억할 수도 있습니다. 음, 제대로 작동하지 않았다고 가정 해 봅시다. 따라서 성능이 낮은 OS, 해당 OS에서만 실행되는 새로운 API 및 이전 세대보다 빠른 작업을 수행하기 위해 해당 API 및 OS 가 필요한 새로운 세대의 하드웨어가 있었습니다.

그러나 개발자 OpenGL을 통해 D3D 10 급 기능에 액세스 할 수 있습니다. ARB가 Longs Peak에서 바쁘지 않았다면 글쎄요.

기본적으로 ARB는 API를 개선하기 위해 1 년 반에서 2 년 정도의 노력을 들였습니다. 실제로 OpenGL 3.0이 출시 될 때 Vista 채택이 시작되고 Win7이 Vista를 뒤엎을 수있었습니다. 대부분의 게임 개발자는 D3D-10 클래스 기능에 신경 쓰지 않았습니다. 결국 D3D 10 하드웨어는 D3D 9 응용 프로그램을 제대로 실행했습니다. 그리고 PC-to-console 포트 (또는 PC 개발자가 콘솔 개발에 뛰어 들었습니다. 선택하십시오)의 등장으로 개발자들은 D3D 10 클래스 기능이 필요하지 않았습니다.

이제 개발자가 WinXP 시스템에서 OpenGL을 통해 이전에 이러한 기능에 액세스 한 경우 OpenGL 개발에 많은 도움이되었을 것입니다. 그러나 ARB는 그들의 기회를 놓쳤다. 그리고 최악의 부분을 알고 싶습니까?

API를 처음부터 다시 작성하는 데 2 ​​년이 걸렸음에도 불구하고 여전히 실패했으며 현재 상태로 되돌아갔습니다 (사용 중단 메커니즘 제외).

따라서 ARB는 중요한 기회 창을 놓쳤을뿐만 아니라 기회를 놓치게하는 작업도 수행하지 않았습니다. 거의 모든 서사시가 실패합니다.

이것이 OpenGL과 Direct3D의 이야기입니다. 놓친 기회, 심한 어리 석음, 고의적 인 실명 및 단순한 어리 석음에 대한 이야기.


24
이 글을 어딘가에 작성 했습니까, 아니면 머리 꼭대기에서 글을 쓰셨습니까?
Kristofer Hoch 2016 년

38
@ 크리스토퍼 (Kristofer) : 작성하는 데 1 시간 정도 걸리는 무언가에 대해 "머리 꼭대기에서"라고 부를 수 있는지 모르겠지만 어딘가에 쓰지 않았습니다.
Nicol Bolas 2016 년

18
@ F.Aquino : 엔진 자체가 아니라 FPS 게임에서 사용하는 렌더링 시스템에이 특성을 기꺼이 적용 하시겠습니까? CS는 Half-Life 1을 기반으로하지만 Quake를 기반으로하는 것은 무엇입니까? 죄송합니다; 구입하지 않습니다. 물론, 새로운 FPS를 중심으로 한 많은 e- 스포츠 토너먼트가 있지만 새로운 FPS에는 e- 스포츠 잠재력이 없다는 전제를 사지 않습니다. CS가 일부 선수들 과 같은 매력을 가지고 있지는 않지만 그 선수들이 모든 FPS e- 스포츠를 구성한다고 생각하는 실수는하지 않습니다.
Nicol Bolas 2016 년

165
와. 나는이 물건의 대부분에 대해 신경 쓰지 않으며 여전히 잘 읽습니다!
피터 로웰

12
Which they, in all of Microsoft's collective imagination, called... the High Level Shading Language (HLSL).이것에 6 분 이상 동안 LOLled.
ApprenticeHacker

133

질문이 '게임 편집자'가 아니라 '게임 개발자'일 때 모두가 사용자 기반에 집중한다는 것이 이상하다는 것을 알았습니다.

저에게는 개발자로서 Linux는 피의 혼란입니다. 너무 많은 버전, 데스크탑 관리자, UI 키트 등이 있습니다. 작업을 오픈 소스로 배포하지 않으려는 경우 사용자가 패키지, 라이브러리 및 설정, 그것은 악몽입니다 !

반면에 Microsoft는 놀라운 호환성과 플랫폼 안정성을 제공합니다. 적절한 DX 또는 VC 재배포 가능 소프트웨어가 설치되지 않은 Windows XP, Vista 및 7, 32 및 64 비트 버전을 실행하는 컴퓨터와 같이 하나의 폐쇄 소스 설치 프로그램으로 모든 범위의 시스템을 대상으로 할 수 있습니다.

마지막으로 인터넷과 DIRECTX의 비교를 중단하십시오. Direct3D와 OpenGL을 비교하거나이 작업을 수행하지 마십시오 . DirectX는 OpenGL이 지원하지 않는 입력 지원, 사운드 지원, 영화 재생 등을 제공합니다.


40
"저는 개발자로서 Linux는 피의 혼란입니다." 과연! Fedora와 Ubuntu가있는 환경에서 일합니다. 그 둘 사이에도 문제가 있습니다. (저는 Linux 팬보이를 추가해야합니다.)
David Poole

48
@ jv42 : 이것은 일반적인 오해처럼 보입니다. 거의 모든 버전과 데스크톱 관리자 및 UI 키트 등은 게임 시작 및 작동과 관련이 없습니다. 게임 (제공된 상태)이 libGL, libX11 및 libasound (또는 libopenal 또는 libao 또는 liboss) 이상에 의존하는 경우 문제가있는 것입니다.
greyfade

19
@greyfade "제공된 게임이 libGL, libX11 및 libasound (또는 libopenal 또는 libao 또는 liboss) 이상에 의존하는 경우 문제가 있습니다." 그런 다음 libao-0.0.4alpha에 연결하면 사용자에게 libao-0.0.5beta가 있으며 아무 효과가 없습니다.
quant_dev

17
모든 Linux 배포판에서 실행되도록 바이너리를 패키징하는 것은 그리 어렵지 않습니다. 블렌더 개발자들은 각 릴리스마다이를 수행한다. 블렌더에는 Linux 릴리스 패키지가 하나만 있습니다 (웰 2, 32 비트 및 64 비트).
datenwolf

8
Linux 사용자는 게임에 대해 더 많은 비용을 지불합니다. 참조 : koonsolo.com/news/linux-users-show-their-love-for-indie-game2dboy.com/2009/10/26/pay-what-you-want-birthday-sale-wrap-up을
Alexander

88

지구상에서 Linux 및 Mac보다 더 많은 Windows 사용자가 있기 때문입니다. 진실은 사람들이 가장 큰 시장을 가진 것을 위해 물건을 만든다는 것입니다.
안드로이드와 아이폰에는 멋진 게임이 있지만 Windows Mobile과 Symbian은 그렇지 않습니다.


24
@Mahmoud Hossam : 사실이 아닙니다. OpenGL을 사용한다고해서 전체 응용 프로그램이 * nix 환경에서 마술처럼 작동한다는 의미는 아닙니다. 그래픽 엔진은 (예를 들어, Windows가 아닌 Linux에 존재하며 그 반대도 마찬가지입니다). 그것은 전체 바구니가 아니며 여러 플랫폼에서 코드를 유지 관리하는 데 상당한 비용이 듭니다.
Ed S.

5
@Mahmoud : 맞습니다. 그리고 어쨌든 Linux / Mac OS로 포팅하는 것을 방해하지 않는다면 왜 기본 라이브러리를 사용하지 않습니까? DirectX는 OpenGL보다 Windows에서 훨씬 더 잘 지원됩니다.
Dean Harding

10
@Mahmoud : 문제의 전제는 "개발자가 Windows를 선호하는 이유"입니다. 답변 : 게이머가 사용하는 것이기 때문입니다. 시장의 2 % 만 차지한다면 Linux / Mac으로 포팅 할 필요가 없으며,이 경우 포팅을하지 않으면 OpenGL을 사용하지 않아도됩니다.
딘 하딩

4
@Mahmoud, 사람들이 리눅스로 전환하도록하는 것은 게임 개발자의 일이 아니다.
GrandmasterB

6
@John 1000 만 이상의 World of Warcraft 플레이어가 당신과 함께 한마디하고 싶습니다. 그리고 이것은 단지 하나의 게임입니다.
Marcelo

50

Windows의 시장 점유율은 90 %가 넘고 Linux (Linux에 대해 구체적으로 요청한 이후)는 소프트웨어 비용을 지불하지 않는 많은 사용자를 보유한 것으로 유명합니다. 그것이 사실인지 아닌지 여부는 관계가 없습니다. 인식이 있고 사람들의 결정에 영향을 미칩니다.


1
개발자가 OpenGL을 사용하는 경우 Windows와 Linux를 모두 지원하므로 실제로 더 나은 것으로 생각하기 때문에 Linux를 사용하고자하는 Linux 사용자를 유치하는 것이 실제로 마케팅 이점이 될 것입니다.
M.Sameer

9
OpenGL을 사용하더라도 Linux 시장이 정당화하지 못하는 크로스 플랫폼을 개발하고 테스트하는 비용이 있습니다. Directx는 (슬프게도) OpenGL보다 현재 PC 게임을위한 더 나은 플랫폼입니다. OpenGL을 기반으로하는 PC에는 새로운 게임이 거의 없습니다.
Martin Beckett

25
크로스 플랫폼은 "OpenGL 용 코드"만큼 간단하지 않습니다.
시스템 다운

13
실제로 Linux 사용자가 소프트웨어 비용을 지불하지 않는다는 것은 사실이 아닙니다. Humble Indie Bundle (당신이 지불하고자하는 금액으로 얻을 수있는 게임 묶음)은 현재 두 번 수행되었으며 Linux 사용자가 번들에 대해 Windows 사용자보다 많은 돈을 지불하고 있음을 보여주었습니다.
Htbaa

9
@Htbaa 물론 그들은 더 많은 돈을 지불하고 절망적이었습니다. 아마도 OS에서 플레이 할 수있는 유일한 게임 일 것입니다.
Marcelo

11

Windows는 대규모 조직의 지원을 받기 때문에 10 년 전에 플랫폼에서 게임 개발을 원한다고 결정했습니다 .

이것은 맥에게는 해당되지 않았으며 지금은 사실이 아닙니다. iOS조차도 아닙니다. Apple은 iOS 게임 개발을위한 도구를 제공하지 않습니다. 그러나 경쟁이 상대적으로 적은 거대한 시장 (1995 년 PC보다 iPhone이 더 많음)은 사람들이 어쨌든 그렇게합니다.

Linux의 경우 어떤 종류의 우선 순위를 설정할 수있는 중앙 기관조차 없습니다. 리눅스가가는 방향은 아주 훌륭하지만 약간은 세상적인 프로그래머에 의해 결정되지 않습니다.

오늘날 PC 게임을 만들려면 많은 2D / 3D 아티스트, 게임 디자이너, 스크립터, 배우, 테스터 등이 필요합니다. 실제 프로그래밍에 대해서는 실제 게임 엔진 (CryEngine, Unreal Engine, Quake Engine, Source Engine)을 사용하기 만하면됩니다. 따라서 실제 프로그래머없이 모든 것을 할 수 있습니다.

그 때문에, 비즈니스의 특성상 프로그래머는 어느 플랫폼을 선택했는지 거의 언급하지 않습니다. 그리고 일반적으로 관리자는 Microsoft가 제공한다고 주장하는 지원을 찾고 오픈 소스가 아닌 생각 패턴에 어긋나는 것을 처리합니다.

이러한 이유로 대부분의 상용 최종 사용자 소프트웨어 개발은 ​​Windows에서 수행됩니다.
저는 플래시 게임을 만드는 회사에서 일하기 때문에 특정 플랫폼에 구속되지 않습니다. 그러나 우리가 사용하는 대부분의 도구는 Linux에서 사용할 수 없기 때문에 우리는 모두 창에서 개발합니다.


2
"그래서 당신은 실제 프로그래머없이 모든 일을 할 수있을 것입니다." 당신은 풍자를 잊었다.
Allon Guralnek

@ AllonGuralnek : 거기에 풍자없는. 대형 게임의 고전적인 게임 개발에서 프로그래머는 시각적 편집기 또는 실제 스크립팅을 통해 컨텐츠와 동작을 제공하는 엔진과 수단을 만든 다음 게임 / 레벨 / 미션 디자이너가 이러한 수단을 사용합니다. 작동하고 충분히 강력한 엔진을 구입하면 기본적으로 1 단계를 차단할 수 있습니다.
back2dos

2
한 줄의 코드를 작성하지 않고 만들어진 합리적으로 주목할만한 게임의 구체적인 예가 있습니까?
Allon Guralnek

1
@AllonGuralnek : 아무도 코드 없이 게임을 만들지 않고 프로그래머 없이 게임을 만들 것이라고 말하지 않았습니다 . 완전히 변화하는 모드를 만들기 위해 프로그래머 일 필요는 없습니다. DotA 는 내 머리 꼭대기에서 생각할 수있는 가장 인기있는 것입니다.
back2dos

1
@AllonGuralnek : 아니요. 코드를 작성하는 사람들은 코드를 작성하는 사람들입니다. 레벨 디자이너는 스크립팅에 대해 어느 정도 이해해야합니다. 많은 프로그래머들이 종종 일정량의 관리 기술을 요구합니다. 첫 번째는 프로그래머가 아니며 두 번째는 관리자가 아닙니다. 또한 귀하의 DotA 평가가 잘못되었습니다. 먼저 RTS를 새로운 장르 로 바꾸는 것은 전적으로 게임을 바꾸는 것이고, 둘째 는 ESWC를 포함한
back2dos

10

이미 말했듯이 가장 중요한 부분은 사용자 기반입니다. PC 사용자의 95 %가 Windows를 사용합니다. PC 게이머는 거의 독점적으로 Windows를 사용합니다. Mac 또는 Linux를 사용하는 이들조차도 가상화 또는 에뮬레이션을 통해 Windows 게임을 가장 자주 실행합니다 (예외는 거의 없음).

그러나 인구 통계가 전부는 아닙니다. 게임 개발자가 플랫폼을 더 매력적으로 만들기 위해 Microsoft가 수행하는 부분을 과소 평가하지는 않을 것입니다. 기본적으로 당신은 완벽한 기능을 갖춘 얻을 무료 도구 세트 , 가장 중요한 XNA 게임 스튜디오 . 이를 통해 Windows 용 개발뿐만 아니라 Xbox360 용 개발도 가능합니다 . 또한 WP7 전화 용 최신 버전도 있습니다. 분명히 Microsoft 도구이므로 OpenGL이 아닌 DirectX를 사용합니다.


3
모든 시간 여행 독자를위한 참고 사항 : 2014 년 4 월 기준으로 XNA는 공식적으로 사망합니다. 마지막 릴리스 (4.0)는 2010 년에 게시되었으며 현재 (2013)와 일몰 사이에 새 버전을 볼 수 없습니다.
Aren February

1
시간이 많이 걸리는 독자를위한 또 다른 참고 사항 : Windows 8 ( 이상 ) 개발 은 향후 더 이상 무료로 제공되지 않습니다 .
fouric

6

아 아아아 아아아 나는 거의 독점적으로 리눅스를 사용한다. Windows로 듀얼 부팅하여 Windows 빌드를 만들고 Mac 빌드에 Mac을 사용하지만 그게 전부입니다.

트릭은 수년에 걸쳐 개발 한 크로스 플랫폼 프레임 워크입니다. 우리 게임은 그 위에 구축되었으며 Linux / OpenGL, Mac / OpenGL 및 Windows / Direct3D (그리고 곧 iOS / OpenGL)에서도 동일하게 작동합니다.

틀림없이 우리 회사는 AAA 타이틀을하지 않기 때문에이 적용되지 않을 수도 있습니다,하지만 우리는 최고 캐주얼 게임 (볼 수 있도록 할 웹 사이트를 - CSI : 뉴욕, 살인 그녀가 쓴 두 곧 2011s는 중요한 라이센스의를 사용하여 제목의 예 Sherlock Holmes 1과 2의 분실 사례도 꽤 성공적이었습니다)

나는 다른 것에 대해 gedit + gcc + gdb + valgrind를 포기하지 않을 것입니다.


3
프로그래밍에 gedit이 과소 평가
Alexander

2
과소 평가 된 @Alexander도 설명을 시작하지 않습니다
Shahbaz

3
미안, 나는 결국 gedit를 포기했다. 나는 지금 gvim을 사용하고 훨씬 행복하다 :)
ggambett

4
  1. 관성. 과거에 Windows를 사용한 적이 있다면 다른 것으로 전환하는 것이 번거 롭습니다. Windows DirectX를 사용하는 경우 OpenGL보다 쉽고 편리하게 사용할 수 있습니다.
  2. 시장 점유율. 데스크탑에서 Windows의 시장 점유율은 OS X의 시장 점유율보다 크며 Linux의 시장 점유율은 Linux보다 큽니다. 돈 회담.
  3. 상표. DirectX는 SDL (OpenGL 이외의 DirectX 기능 중 일부를 복제해야하는 것)보다 잘 알려져 있습니다.
  4. 덜 혼란. 사용자의 Linux는 최대 OpenGL 1.4 또는 OpenGL 2+ 만 지원합니까? 최신 OpenGL 소개 와 같은 OpenGL 2.0 자습서를 사용할 수 있습니다 . 1 장 : Linux 버전 의 그래픽 파이프 라인 ?

요즘 리눅스는 게임 개발에 있어서는 더 많은 욕구가 있으며, 대부분의 개발자는 Linux 버전보다 OS X 포트 버전을 재정적으로하는 것이 좋습니다. 그럼에도 불구하고 콘솔 시장은 게임을 위해 결합 된이 두 플랫폼보다 더 가치가 있습니다 ...

DirectX를 모노 플랫폼으로 사용하고 싶다면 괜찮습니다. 크로스 플랫폼이 되려면 적어도 다른 플랫폼에서 OpenGL을 사용해야 할 가능성이 높습니다.


2
질문 4에 대한 답은 2+입니다. Mesa3D는 최대 OpenGL 2.1을 지원합니다. 즉, X11 용 3D 하드웨어 용 모든 그래픽 드라이버는 Mesa 버전 6.8부터 OpenGL 2.1 이상을 지원합니다. 여기에는 지난 몇 년 동안 발표 된 모든 Linux 배포판과 NVIDIA 및 AMD가 3.0 이상을 지원하는 이진 드라이버가 포함됩니다. 여기에는 intel895 사용자는 포함되지 않지만 더 이상 사용되지 않습니다.
greyfade

1
이것이 사실이 아닌 것 같습니다. i915 / i945 (GMA 900/950) 칩셋이 장착 된 컴퓨터는 판매 중이며 더 이상 사용되지 않습니다. 몇 달 전 (Ubuntu 11.04 / Fedora 15)의 최신 배포판에서도 glxinfo는 1.4 (Mesa 7.11-devel) 이하의 OpenGL 버전을 반환합니다. 이러한 인텔 하드웨어는 소프트웨어 지원 없이는 이후 버전을 단순히 수행 할 수 없으므로 기본적으로 소프트 파이프를 사용할 수있을 때까지 해당 카드의 Linux는 더 높은 버전의 OpenGL을 수행하지 않습니다. OpenGL 2.0 이상을 대상으로하면 광범위한 Linux 데스크탑 시스템에서 실행되는 프로그램이 중지됩니다.
Anon

그럼에도 불구하고 나는 그 우려를 보지 못했다. 동일한 칩셋은 Windows에 제한이 있으므로 대부분의 그래픽이 많은 게임은 문제가되지 않습니다 .
greyfade

4

답은 분명하다. 게임 작성의 목표는 돈을 버는 것입니다. 더 많은 최종 사용자가 Windows를 실행하므로 더 큰 시장이 있으며 Linux 게임보다 Windows 게임에서 더 많은 돈을 벌 것으로 예상됩니다. 그렇게 간단합니다.

'누군가가 왜 ...'라는 질문을 스스로에게 물으면 돈이 세상을 돌아 다니게한다는 것을 기억하십시오.


1
) 예하지만 당신은 크로스 플랫폼 게임을 그냥 윈도우 사용자보다 더 많은 것을 얻을 수 있습니다
M.Sameer

크로스 플랫폼 인 것이 전부는 아닙니다. 추가 사용자 수의 비율이 상대적으로 낮은 경우 추가 개발 비용과 지속적인 지원 비용의 균형을 유지하여 실제 추가 데이터를 기반으로 정보에 근거한 결정을 내려야합니다. 그에 대한 전 세계적으로 옳고 그른 답은 없지만 각 개별 프로그램에 대해 옳고 그름의 대답이 있으며 한 프로그램에 대한 옳은 것이 다른 프로그램에 잘못 될 수 있습니다.
Maximus Minimus

4

도구, 도구, 도구.

그것이 그 결과입니다. Windows에서 개발하면 지구상에서 최고의 개발 도구를 이용할 수 있습니다. Visual Studio의 디버거에 원격으로 가까이 다가오는 것은 없으며 DirectX 디버그 런타임은 훌륭하고 PIX는 훌륭하며 비슷한 플랫폼은 다른 플랫폼 / API에는 존재하지 않습니다. 물론 좋은 것들이 있습니다. 다른 플랫폼의 도구는 좋지 않다고 말하지는 않지만 MS가 제공하는 도구는 너무 재미 있지 않은 (Valgrind) 팩보다 훨씬 앞서 있습니다.

결론은 이러한 도구가 도움이된다는 것입니다. 그들은 당신이 일을 끝내고, 생산성을 높이도록 도와 주며, 문서화 된 것처럼 행동하지 않는 API로 씨름하지 않고 자신의 코드에서 오류에 집중하도록 도와줍니다.


PIX 대단합니다. 귀찮은 픽셀을 클릭하여 발생한 쉐이더 디버깅 및 발생한 상황을 확인하는 것이 좋습니다!
Chris Pitman

4

그래서 나는이 모든 답을 살펴 보았고 Walmart 선반에있는 콘솔 게임에 대한 코드를 가지고있는 게임 개발자로서 매우 다른 대답을 가지고 있습니다.

분포.

닌텐도 콘솔을 사용하려면 닌텐도의 허가를 받고 닌텐도의 공장에서 구매하고 닌텐도의 간접비를 지불하고 월마트와 협상하고 창고 거래를 처리하고 제조하기 위해 돈을 먼저 지불해야하며 상자를 인쇄하고 선적해야합니다 , 모든 보험 등을 수행합니다.

XBox를 원한다면 XBLA가 있어야하지만 여전히 Microsoft의 축복이 필요합니다. 라인을 기다려야합니다. 패치 등을 출시하는 데 수만 달러가 필요합니다.

iOS에서는 여전히 애플의 요구가 필요하며, 그들은 당신을 변덕스럽게 끌어 당길 수 있습니다.

Steam에서는 여전히 Valve의 허가 또는 초록불과 많은 돈이 필요합니다.

.

Windows에서? 웹 사이트와 다운로드 버튼을 설정합니다.

.

다른 플랫폼은 가치가 없다고 말하는 것이 아닙니다. 그러나 게임을 개발하려고 할 때 너무나 많은 끔찍한 일들이 있습니다. 저에게는 사이트에서 바이너리를 때리고 작업에 집중할 수 있다는 약속이 있습니다. 적어도 시작하기 위해서는- 잠재적 인 장애 장벽을 크게 줄입니다.

"일이 안정되면 나중에 XBLA 포트를 사용할 수 있습니다."

그리고 리눅스에서도이 정도면 괜찮을 것이며, 7 명의 고객이 좋다면 시작할 수 있습니다.

그러나 Windows는 진정한 개방형 개발, 진정한 개방형 배포 및 기발한 물건에 관심이있는 매우 크고 매우 활발한 고객 기반의 세 가지 큰 장점이 있습니다.

내가 어디에서 시작해야하는지 상상하기가 어렵습니다.


3

난 당신의 역사에 대해 자세히 읽어해야한다고 생각 다이렉트이 기사 .

MS는 사람들이 자신의 OS를 사용하지 못하도록 openGL보다 DX를 선택했다고 생각합니다.


4
OGL은 Windows 용으로 최적화되지 않았기 때문에 DX를 만들었습니다. 새로운 하드웨어 및 운영 체제 개발을 활용하기 위해 빠르게 확장 할 수 없으며 사운드, 제어 입력 등을 포함하지 않습니다.
jwenting

2
iow DX는 성능상의 이유로 Windows에 특화되어 있으며 Microsoft가이를 유지하고 새로운 기술이 출시되면이를 신속하게 통합 할 수 있도록합니다. OpenGL은 5 년 전에 존재했던 그래픽 하드웨어 지원 수준에 머물러 있습니다.
jwenting

1
@jwenting 성능이 다른 플랫폼으로 포팅되지 않은 유일한 이유라고 생각하지 않습니다. 포팅을 원한다면 최소한 오픈 소스로 구현하여 커뮤니티에 맡겨 두어야합니다. 그것.
Mahmoud Hossam

1
그들은 소스 C #을 공개하지 않았으며 표준 사양에 언어 사양을 제출했습니다. Microsoft는 이러한 표준 기관의 회원이며 항상 이러한 작업을 수행합니다 (예 : html, javascript 및 기타 표준에 크게 기여). 오픈 소싱은 APL과 같은 컴파일러 및 라이브러리의 소스 코드를 공개하는 것을 의미했을 것입니다.
jwenting

1
@jwenting : 기록을 위해 Gallium3D 프레임 워크를 대상으로하는 Linux에서 Direct3D 10 및 11의 구현이 있습니다. (와인과는 아무런 관련이 없습니다.) 또한 "OGL은 Windows에 최적화되어 있지 않습니다"라는 주장에 동의하지 않습니다. 그것은 OpenGL의 제한이 아닌 하드웨어 드라이버 구현의 문제입니다.
greyfade

1

정치 및 통제와 많은 관련이 있습니다. 90 년대 후반 SGI와 MS는 실제로 다음과 같은 노력을 결합하기로 동의했습니다.

http://en.wikipedia.org/wiki/Fahrenheit_graphics_API

SGI는이 프로젝트에 많은 투자를했지만 MS는 그렇지 않았다. SGI는 MS에 필요한 SGI보다 MS가 더 필요했습니다. 나머지는 역사이다.

D3D와 OpenGL은 매우 다른 두 가지 API로, 개발자가 필요에 맞는 것을 선택하는 것은 개발자의 몫입니다.


0

리눅스가 데스크톱 시스템으로서 끔찍하게 실패했기 때문입니다. 누군가가 이전 리눅스에서 지적했듯이 개발자 (다른 라이브러리, UI 툴킷 등)에게는 엉망입니다.

또 다른 문제는 자유 지향성과 독점 소프트웨어에 대한 지원 부족입니다. Nvidia는 항상 Linux 용 고급 (독점) 드라이버를 제공하지만 우분투 및 기타 배포판에서는 제공하지 않습니다. Linux에서 Windows와 같이 사용 가능한 이진 드라이버 인터페이스도 없습니다. (kernel 소스에는 binaryApiNonsense.txt라는 텍스트 파일이 있습니다.) Linux에서는 Nvidia 하드웨어 만 올바르게 지원된다고 말했습니다. Linux에서 Nvidia 하드웨어를 사용하여 대부분의 ID 소프트웨어 게임을 즐길 수 있습니다.

다음 개발 도구. MSFT는 뛰어난 C ++ 지원을 제공하며 Visual Studio 디버거는 C ++와 관련하여 gdb보다 좋습니다. 마지막으로 Photoshop과 같은 추가 도구가 없습니다. 또한 .net을 사용하면 GUI 도구를 빠르게 만들 수 있습니다. 많은 게임 스튜디오는 .net 프레임 워크를 사용하여 내부 용 도구를 코딩합니다.

나는 거의 잊었다. 그래픽 시스템은 X11을 방금 옮긴 시절 가장 끔찍한 일 이었기 때문에 끔찍하다. OSx와 Win의 최신 그래픽 시스템을 제대로 설계하고 구현하지 못했습니다.


4
흠? Linux에서 인텔 및 ati 카드가 제대로 작동합니다. X11의 문제점은 무엇입니까? 나는 항상 클라이언트 서버 아키텍처 때문에 다른 OS (특히 Windows)의 대안보다 훨씬 낫다고 느꼈습니다.
대안

아니 그들은 glxinfo를 입력하지 않고 날씨가 좋은지 알지 못합니다! X11은 끔찍한 예일 뿐입니다. theinvisiblethings.blogspot.com/2010/08/…
Nils

마지막 문장을 읽으면 Linus 가 X11 패치가 아닌 커널 레벨 패치를 구현했습니다 .
대안

1
그래픽 시스템에 대해서는 잘 모르지만 (포인트가있을 수 있음) 데스크탑 시스템이 Linux가 아니거나 적어도 정확하지 않아 Linux가 실패했다고 말합니다. 나는 Windows에서 Linux로 옮겼으며 그 이후로 많은 생산성을 느꼈습니다. Linux의 성능은 내가 사용한 모든 컴퓨터에서 Windows보다 우수합니다. 또한 C ++을 코딩하지 않으며 Visual Studio와 비교하여 Eclipse가 C ++ IDE로 서있는 곳을 알고 싶습니다.
M.Sameer

화염 방사기를 내려 놓으십시오. 나는 일반적으로 받아 들여지는 의견은 VS가 최고의 IDE라는 것입니다. 그러나 이클립스는 아직 젊고 갈 길이 있습니다. 그러나 나는 리눅스에서 모든 것이 스크립팅 가능하고 파이프 가능하다는 것을 좋아합니다!
Vorac
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.