OpenGL을 계속 연구하거나 DirectX로 전환하여 게임 산업에 취업 할 기회를 더 많이 주어야합니까? [닫은]


29

저는 OpenGL과 Linux를 사용하여 한동안 그래픽 프로그래밍을 배우고 있습니다. 나는 대부분의 개념에 대해 잘 알고 있지만 실제로 내 지식을 넓히고 게임 개발, 특히 게임 엔진 개발 분야에서 경력을 쌓고 싶습니다.

지금까지 대부분의 게임 스튜디오는 DirectX를 사용하여 Windows 용 게임을 만드는 것으로 보입니다.

편집 : OpenGL vs DirectX 질문이 전에 여기에 요청되었지만 알고있는 관점에서 답을 찾지 못했습니다.

편집 2 : 모든 응답 / 의견을 읽은 후 OpenGL / GLSL을 사용하여 그래픽에 대해 더 깊이 탐구하기로 결정했지만 API에 대한 기본적인 이해를 위해 DX를 가지고 놀려고합니다. 나는 당신이 내게 준 답변과 통찰력에 대해 모두에게 감사하고 싶습니다.


이 질문의 일반화 된 버전은 programmers.stackexchange.com 에서 좋은 답변을 얻을 수 있습니다 ...
Macke

1
나는 기본적으로 HLSL을 해본 적이없는 OpenGL 사람에 의해 DX 쉐이더의 더 좋은 점을 배웠습니다. "조각 셰이더"가 "픽셀 셰이더"를 의미하는 한, 개념은 거의 동일합니다. P
drxzcl

IIRC, DirectX는 버전 8 또는 9에서 상당히 OpenGL과 비슷하게 만들어졌습니다. 그 전에 DirectX는 때때로 불필요하게 사용하기 어렵다는 비판을 받았습니다. API는 여전히 다르지만 일반적인 접근 방식은 매우 유사합니다. 면책 조항-나도 전문가가 아닙니다.
Steve314

@Macke-커리어 조언은 프로그래머가 아닌 주제입니다. 이것은 아마도 너무 구체적하지만 일반적으로 경력 질문 @ 주제에있을 것입니다 (현재 영역 (51)에서 제안) 전문의 사항 가서이 SE 지원에 투입하십시오
차드

업계에 뛰어 들어도 압도적 인 확률은 그래픽 프로그래머가 아니며 하나의 API, 다른 API 또는 둘 다를 아는 ​​것이라도 중요하지 않습니다. 그 외에도 회사와 프로젝트에 따라 다릅니다. D3D는 PC 공간에서 더 일반적으로 사용되며 GL | ES는 모바일 공간에서 완전히 지배적이며 콘솔은 모두 스스로 배울 수없는 독점 API를 사용합니다.
Sean Middleditch 2016 년

답변:


28

정말 중요하지 않습니다. 핵심 개념은 둘 다 동일하며, 특히 픽셀 쉐이더가 표준입니다. 그리고 대부분의 게임은 멀티 플랫폼이기 때문에 아마도 두 언어에서 비슷한 기능의 하위 집합을 사용할 것입니다. glsl 또는 hlsl로 셰이더를 작성할 수 있다면 괜찮을 것입니다.

즉, "게임 엔진 개발"의 수는 적습니다. 대부분의 회사는 기성품을 사용합니다. 존재하는 직책의 경우, 직급이 더 적습니다. 대부분의 엔트리 레벨 게임 프로그래머는 모두 추상화되어 있기 때문에 셰이더 이외의 그래픽 관련 코드를 작성하지 않습니다.


1
대부분의 엔트리 레벨 프로그래머는 무엇을합니까? 크고 작은 스튜디오에서?
Quazi Irfan

그것은 별도의 질문입니다. gamedev.stackexchange.com/questions/5538/…
Tetrad

1
더 일반적인 대답을 추가하기 위해 내 경험에 따르면 주니어 프로그래머는 게임 플레이, ui, hud에서 시작하여 거기서부터 작업하는 경향이 있습니다. 게임 플레이는 인기있는 진입 점입니다.
JuniorDeveloper1208

자산 통합 메뉴와 UI는 내 경험에서 가장 일반적인 진입 점입니다.
코요테

여러분, 여기 주석의 특정 질문에 대해 긴 글을 쓰지 마십시오. 그것들은 내가 연결 한 질문에 완벽하게 좋은 답변입니다.
Tetrad

10

그것은 당신이 원하는 직업에 달려 있습니다. DX가 왕인 PC 시장에서의 직업에 대해 생각할 것입니다. 대부분의 AAA 회사는 API가 매우 구체적인 콘솔 시장을 목표로합니다.

예를 들어 PS3에는 OpenGL ES 구현에 대한 독점적 확장이 있습니다.

모바일 공간에서 OpenGL이 성장하고 있습니다. 이제 Windows Phone 7을 제외한 모든 최신 플랫폼에서 사용할 수 있습니다.

이 공간에서는 현재 OpenGL ES 만 사용할 수 있습니다. 그러나 OpenGL 4 및 DX11을 지원하는 강력한 PowerVR 칩이 더 많이 제공됩니다.

OpenGL 기술은 금입니다. DX로 변환하여 필요한 작업을 착륙시킬 수 있습니다. 그러나 그 동안 OpenGL은 사용 가능한 장치 및 플랫폼의 수량에 달려 있습니다.


편집 : 또한 점점 더 많은 회사가 기존 엔진을 사용하는 경향이 있으며 핵심 게임 개발자조차도 저수준 API에서 점점 더 많은 심사를받습니다. 특정 플랫폼에서 버그와 이상한 동작에 직면 할 때 항상 원시 API에 대해 잘 알고있는 것이 좋습니다. 그러나 그것은 모두 개념에 달려 있으며, 다른 사람들이 지적한 것처럼 DX와 OpenGL은 핵심에 동일한 개념에 대한 지식이 필요합니다.


편집 : OpenGL 및 아마도 셰이더에 대해 잘 알고 있으므로 OpenCL을 사용해보십시오.이 API는 병렬 컴퓨팅에서 다음으로 큰 잠재력을 발휘할 수 있습니다.

OpenCL 커널은 OpenGL과 상호 운용 가능하며 OpenGL 개발자에게는 이해하기 쉬운 데이터 유형을 사용하므로 언급하고 있습니다. 그것을보고 당신이 훌륭한 일반 컴퓨팅 솔루션 (현재 총알 물리학 에 통합되어 있음 )에 대한 경험을 얻을 수 있는지 확인하십시오 .


업계 표준 인 OpenGL은 다른 라이브러리 및 API에 영감을주었습니다. 그 중요성을 무시해서는 안됩니다. 그러나 다른 한편으로 당신은 한 가지에 멈춰서는 안되며 내가 당신이라면 OpenGL과 DirectX를 추상화하는 더 높은 수준의 API와 엔진을 볼 것입니다.
코요테

OpenCL에 익숙합니다. 나는 물리 엔진 (기본적으로 학습 목적으로)을 구축하는 부수적 인 프로젝트를 진행하고 있으며 약간의 OpenCL을 사용하여 더 빨리 만들었지 만 아직 놀라운 결과를 얻지 못했습니다 (일부 경우조차도 만든이 악화)
adivasile

그것은 좋은 시도의 징조입니다;) 불릿 엔진의 구현을 살펴보십시오. 어쨌든, 당신의 프로젝트에 행운을 빈다.
코요테

7

어떤 API를 배우는지는 중요하지 않다는 데 동의합니다. 기본 개념을 아는 것이 중요합니다.

게임 개발을 살펴보면 Windows만이 유일한 대상 플랫폼이 아닙니다. 내가 들었 듯이, 애플은 목표 플랫폼으로 성장하고 있지만 콘솔 또한 중요하다. 콘솔에는 일반적으로 자체 특수 그래픽 API가 있습니다 (저희가 귀찮게하기 위해하고 있다고 생각합니다). 콘솔 API는 DirectX보다 OpenGL과 더 공통적 인 경향이 있지만 여전히 큰 차이는 없습니다.

무엇이든지 당신을 위해 일하십시오.


1
XBox는 DirectX 방식으로 작동 할 것입니다 ...?
Macke

예, PS3는 PSGL을 사용합니다. 그러나 X360은 PC와 마찬가지로 DirectX를 사용했지만 확실하지는 않습니다.
Quazi Irfan

Xbox에서는 경험이 없지만 Wikipedia에 따르면 API는 DirectX를 기반으로합니다. PS3에서 PSGL은 사용 가능한 API 중 하나 일뿐입니다.
mrbinary

X360은 DX9에 가까운 API를 사용하며 상대적으로 적은 양의 비교적 빠른 메모리를 가지고 있다는 사실을 수용하기 위해 몇 가지 단점이 있습니다.
drxzcl

6

게임 개발 교수의 관점은 어떻습니까?

OpenGL의 기초가 아래에 있다면 ALL은 이전 플랫폼 (특히 XP)이 최신 그래픽을 지원하지 않기 때문에 호환성 이유로 인해 Dx9가 여전히 개발에 사용되고 있음을 DirectX (DX로 넘어가는) 세계로 모험하는 것을 의미합니다 Dx10 및 Dx11의 파이프 라인. (Dx9에서 시작한 다음 Dx10과 11의 차이를 기록한 다음 권장 사항으로 읽어야합니다.) 또한 더 반올림합니다.

이상적으로 HLSL과 CG에서 좋은 시간을 보내고 싶을 것입니다. (이 두 가지 모양의 쉐이더 언어는 실제로 버텍스 및 프래그먼트 (픽셀) 쉐이더의 작동 방식을 이해하는 동일한 언어 (하나는 Microsoft와 Nvidia는 브랜드)입니다) AI 코드가 아닌 렌더링 시스템 또는 하위 시스템에서 작업한다고 가정하고 귀하와 귀하가 근무하는 모든 게임 회사에 큰 자산이 되십시오. ;-)

Ogre3D는 두 가지 그래픽 하위 시스템 (OpenGL / DirectX)을 모두 지원하는 오픈 소스 렌더링 엔진이며 많은 게임에서 사용됩니다. 소스를 자유롭게 사용할 수 있기 때문에 소스를 파헤 치고 OpenGL에 대한 호출이 호출과 어떻게 다른지 비교하여 볼 수 있습니다 DirectX.

또한 OpenGL에서 이미 시간을 보냈기 때문에 WebGL에서 가까운 미래에 폭발 할 것처럼 보이는 WebGL을 찌르는 것이 좋습니다.

도움이 되길 바랍니다!


나는 WebGL이 미래에, 적어도 가까운 장래에 폭발하지 않을 것이라고 말하지 않을 것이다. 플러그인없이 브라우저에서 3d를 렌더링하는 또 다른 방법입니다.
Quazi Irfan

주요 공급 업체가 자사 제품 (Visual Studio) 및 Adobe 롤아웃 엣지 (HTML5 JS Flash killer?)와 같은 회사에 HTML5 및 JS 지원을 추가하면서 하드웨어 가속화를 활용하는 훨씬 더 많은 웹 기반 컨텐츠를 보게 될 것이라고 생각합니다.
Robert French

4

필자는 최근 John Carmack이 Microsoft가 OpenGL을 따라 잡았다는 간단한 사실을 위해 DirectX를 추천하고 최근에 OpenGL 사람들이 DirectX를 허용하는위원회에 의해 논쟁하고 디자인하는 데 시간을 소비하는 동안 경쟁 제품을 만들고 봉투를 밀었습니다. 광택을 내고 작업하기가 쉽지만 openGL을 고수한다고 생각합니다.

http://www.tomshardware.com/news/john-Carmack-DirectX-OpenGL-API-Doom,12372.html

일반적으로 그래픽을 좋아하는 경우 고려해야 할 또 다른 옵션은 임베디드 공간에서 일어나는 일입니다.

나는 리눅스와 WinCE를 모두 사용하여 임베디드 공간에서 일한다. 전 포드 SYNC 아키텍트 (6 년 동안 있었음)였으며 이제는 GM의 CUE (Ford SYNC에 대한 GM의 답변)를 연구하고 있습니다. Ford SYNC는 openGL 또는 DirectX를 사용하지 않습니다. Ford는 대신 Flash & Action 스크립트를 선택했습니다. 플래시에서 플래시가하는 일 나는 확실하지 않지만 지옥만큼 느립니다. JD Powers는 평가가 떨어졌습니다. GM의 CUE는 모두 Linux 및 openGL ES이며 GM CUE에는 최신 iMX 프로세서가 있지만 Linux에서 OpenGL의 애니메이션 성능은 엄청납니다. CUE / openGL이 훨씬 빠릅니다. 다시, 포드는 Adobe Flash로 시스템을 무너 뜨 렸습니다.

따라서 게임에서 만들려고하지만 경쟁적 성격에 관심이 있지만 여전히 이런 유형의 작업을 좋아한다면 이력서를 넓히는 옵션을 살펴보십시오. 적어도 임베디드 세계에서 WinCE는 DirectX를 많이 사용하지 않는 것 같습니다. (WinCE는 NT와 약간 다른 API를 가지고 있기 때문에 그 이유 일 수 있습니다). OpenGL은 임베디드 세계 어디에서나 사람들은 태블릿, 자동차 인포테인먼트가 뜨겁고 스마트 폰 등 더 많은 일을하고 있습니다.


임베디드 공간을 언급하면 ​​+1입니다. 임베디드 시스템 (모바일 플랫폼 제외)의 그래픽에 대해서는 생각하지 않았지만 약간의 연구를 거친 후에는 고려할 가치가있는 것으로 나타났습니다. 몇 년 전에 임베디드 플랫폼에 관심이 있었지만 다른 것들이 방해가 되었기 때문에 일찍 포기했습니다.
adivasile

2

나는 당신이 이력서에 당신이 어느 전문화되어 있든지 관계없이 두 가지 모두와 함께 일했다고 말할 수 있다고 생각합니다.

다른 점과 마찬가지로 API / 구문 지식보다 일반적인 기술에 대한 것이 특정 지점을 넘어 서기 때문입니다. 당신은 일을 할 수 있어야하고, 당신의 길을 알고 있어야하지만, 두 API에서 거대한 것을 구현할 필요는 없습니다. (확대되지 않는 O (n * m)입니다 ...). API를 조금 알고 다른 기술 (예 : O (n + m))을 알고 있으면 도움이됩니다.

물론 DX에서 "고급"을 수행하면 보너스 지식을 얻을 수 있습니다. API 지식이 풍부하다는 것을 보여 주었으므로 상자를 연결하는 방법을 알고 있음을 증명하기 위해 어떤 경우에도 고급 기술이 필요합니다 당신이 그것을 끝내기 위해 말해야 할 특별한 마법의 단어).

모든 API (3d 또는 기타) 또는 프로그래밍 언어와 동일합니다.


1

DirectX를 배우기가 더 어려워서 더 나은 기술을 발견했습니다. Directx는 일반적으로 보드 제조업체로부터 더 나은 지원을 제공하지만 Microsoft는 이러한 진보를 활용하기 위해 많은 업데이트를 릴리스하지 않습니다 (하드 코어 게이머 중 일부만 해당 보드를 실제로 사용함). 게임 개발과 관련하여 모든 주요 게임 플랫폼은 자체 독점 그래픽 엔진을 사용합니다 ... xbox-> DirectX Box :) 3D 개념, 메시, 조명, 변형 등을 아는 것은 그들 모두에게 동일한 기술입니다.


DX9-ish와 "modern"openGl (glBegin을 사용하지 않음) 사이에는 개념적 차이가 거의 없습니다. 두 가지 중 하나가 다른 것보다 "더 어렵거나"더 어려운 이유에 대한 여러분의 생각에 감사드립니다.
drxzcl

1
실제로 OpenGL이 기본적인 기본 사항을 더 쉽게 찾을 수 있지만 VBO와 셰이더로 전환하자마자 D3D가 훨씬 쉬워집니다 (확장 기능이 없으면 더 넓은 하드웨어 기반에서도 일관성이 높아집니다).
Maximus Minimus

그것은 저의 경험이기도하므로 질문입니다.
drxzcl

1

하나를 아는 경우 다른 쪽을 쉽게 선택할 수 있습니다.

OpenGL을 알고 있다면 스마트 폰 (android 및 iPhone)과 win / Linux / mac을 쉽게 프로그래밍 할 수 있습니다.

DirectX는 Win / Xbox뿐입니다. 따라서 Xbox를 대상으로하지 않으려는 경우 OpenGL을 사용하면 더 많은 플랫폼을 대상으로 할 수 있기 때문에 OpenGL을 유지하십시오.


-4

나는 OPENGL을 선호합니다. 예를 들어, 모바일 운영 체제가 OPENGL을 사용하는 Android를 고려하십시오. OPENGL 플랫폼을 기반으로 개발 된 게임 엔진이 너무 많습니다.

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