Valve: OpenGL este mai rapid decât DirectX – chiar și pe Windows
într — o întorsătură înfricoșătoare care întărește dezgustul lui Valve Pentru Windows 8, se dovedește că motorul sursă — motorul 3D care alimentează Half Life 2, Left 4 Dead și Dota 2-rulează mai repede pe Ubuntu 12.04 și OpenGL decât Windows 7 Direct3D.
echipa Valve Linux o descompune pe noul lor blog strălucitor: cu un Nvidia GTX 680, Intel i7-3930K și 32GB de RAM, Windows 7 și DirectX, a lăsat 4 morți 2 maxes la 270.6 fps. Cu același hardware, dar software diferit — Ubuntu 12.04 și OpenGL — L4D2 înregistrează 315 fps, cu aproape 20% mai rapid decât Windows.
aceste cifre sunt remarcabile, având în vedere că Valve rafinează performanța motorului sursă sub Windows de aproape 10 ani, în timp ce echipa Valve Linux lucrează doar la portul Linux al sursei de câteva luni. Valve atribuie viteza de până la ” eficiența de bază a kernel-ului și OpenGL.”
portul Linux al L4D2 nu a început la 315 fps, desigur — versiunea inițială a fost de fapt maximă la doar 6 fps. Pentru a realiza un câștig atât de mare de performanță, se adoptă o abordare în trei direcții: jocul este optimizat pentru a juca frumos cu kernel-ul Linux, jocul este optimizat pentru a funcționa cu OpenGL (mai degrabă decât DirectX), iar erorile din driverele grafice Linux sunt abordate.
acest ultim punct este interesant: Valve are relații de lungă durată cu AMD, Nvidia și Intel, unde Valve raportează erorile driverului și producătorul GPU le remediază în timp util. Valve transmite această relație către Linux, ceea ce este foarte important pentru creșterea continuă a Linux ca platformă de jocuri. În acest caz, Valve spune că driverul Nvidia Linux nu avea suport multithreading — și odată ce l-au adăugat la o versiune ulterioară a driverului, performanța a crescut.
Dar iată cel mai bun bit: folosind aceste noi optimizări OpenGL, versiunea OpenGL a L4D2 pe Windows este acum mai rapidă decât versiunea DirectX. Cu același hardware, Windows 7/OpenGL/L4D2 se fixează la 303,4 fps — comparativ cu Windows 7/DirectX / L4D2 la 270,6 fps. Pe scurt: OpenGL este mai rapid decât DirectX.
în ceea ce privește motivul pentru care OpenGL este mai rapid decât DirectX / Direct3D, răspunsul simplu este că OpenGL pare să aibă o conductă mai lină și mai eficientă. La 303,4 fps, OpenGL redă un cadru la fiecare 3,29 milisecunde; la 270,6 fps, DirectX redă un cadru în 3,69 milisecunde. Această diferență de 0,4 milisecunde se reduce la cât de repede conducta DirectX poate procesa și desena date 3d.
de ce mai folosim Direct3D?
dacă OpenGL este mai rapid, de ce DirectX este încă API-ul predominant? Nu este din cauza calității imaginii sau a caracteristicilor: OpenGL 4.0 are toate shaderele și teselatoarele și widget-urile pe care le are DX. Nu este din cauza suportului hardware: toate plăcile grafice Nvidia și AMD acceptă cea mai recentă versiune de OpenGL împreună cu DirectX.
într — adevăr, totul se reduce la acel lucru vechi crummy pe care îl numim efectul de rețea-și, desigur, heft monopolist și dolari de marketing. DirectX, deoarece are un API mai curat și o documentație mai bună, este mai ușor de învățat. Mai mulți dezvoltatori care utilizează DirectX = mai multe jocuri DirectX = suport mai bun pentru șofer. Aceasta este o buclă vicioasă care duce din nou la mai multe Dev-uri DX, mai multe jocuri DX și drivere/instrumente/documentație DX mai bune. Microsoft a comercializat fără încetare DirectX – și cine poate uita lansarea Windows Vista și a campaniei de frotiu OpenGL de la Microsoft? Versiunea pachetată a OpenGL a Vista a fost complet schilodită, forțând mulți dezvoltatori să treacă la DirectX.
Microsoft are motive întemeiate să împiedice progresul OpenGL, desigur: În timp ce DirectX este proprietar și rulează numai pe Windows, Xbox și Windows Phone, OpenGL este complet cross-platform. Există implementări OpenGL solide pentru Mac, Linux, PlayStation 3, Nintendo Wii și aproape orice smartphone modern (OpenGL ES). Evident, este în interesul Microsoft să se asigure că cele mai bune experiențe de joc sunt exclusive platformelor sale.
cu dezgustul lui Gabe Newell Pentru Windows 8 (și Blizzard răsunând sentimentele sale), lansarea iminentă a Steam pe Linux și creșterea continuă a jocurilor pentru smartphone-uri, am putea fi pe vârful unei revoluții OpenGL. Dacă Windows gaming crown continuă să alunece, OpenGL ar putea deveni în curând API-ul implicit, mai degrabă decât un gând ulterior. Foarte curând, ar putea fi standard să dezvolți un joc care să funcționeze bine pe fiecare platformă — mai degrabă decât să te concentrezi pe Direct3D și să lași Linux și OS X în frig.
Valve va vorbi despre progresele sale Linux / OpenGL la SIGGRAPH 2012 săptămâna viitoare. SIGGRAPH este locul în care auzim de obicei despre cele mai recente știri OpenGL și DirectX — așa că rămâneți la curent!
actualizat la 2: 40: Povestea a declarat inițial că spec OpenGL este de obicei înaintea DirectX — dar acest lucru nu a fost adevărat de câțiva ani.