DirectX și OpenGL pe blog Michael flonova

Acesta este un alt halivarny și dispute religioase - ca mai abruptă DirectX sau OpenGL, și poziția mea ca întotdeauna este că acestea sunt atât de bune în felul lor.

Oportunitatea superioară DirectX OpenGL, atunci Microsoft a atașat un loc de muncă foarte bun, dar, de asemenea, OpenGL are avantajele sale - middleware. Odată ce codul scris poate fi adaptat la diferite platforme. Nu spun că acest cod va lucra peste tot în același timp, dar pentru a se adapta destul de real.

OpenGL este disponibil atât pe Windows, cât și în ce mai popular MacOS, în mod constant rezista în mod constant, dar niciodată promițătoare Linux. Și dacă vorbim despre platforme mobile, este disponibil pentru iOS și Android. Și este incredibil de mare plus.

Dacă doriți să ne limităm la platforma Microsoft, alegerea este clar - ar trebui să scrie sub DirectX. Ei bine, dacă aveți planuri de a cuceri piața de telefonie mobilă, este în valoare de gândire despre OpenGL, deoarece Microsoft în această piață până când rezultatul nu strălucește.

De ce am decis să scrie despre opoziția față de DirectX OpenGL? Tocmai am văzut un programator spunând că OpenGL este prea fragmentat și producătorii fac de multe ori extensiile care nu sunt compatibile între ele. Nu este întotdeauna ușor de a transfera codul de la o altă platformă.

Ei bine, în cazul SM, în general, numai SM limitate. Și chiar dacă scrie numai pentru Microsoft tranzițiile la versiuni noi nu este întotdeauna posibil. Doar un singur cod de port de la versiunea 9 până la 10 a fost minunat. Îmi amintesc cum în versiunea nouă a Microsoft tocmai a luat și a schimbat modul de a lucra cu shadere. Doar următoarea versiune de SDK-ul (cred că a fost de vară) sunt puțin diferite de cea anterioară.

Microsoft are chiar și în interiorul migrarea platformei de cod într-o nouă versiune poate avea probleme. Atunci nu ar fi nominalizat un câștigător pentru că ambele biblioteci au fost probleme de compatibilitate. Încă o dată spun că are sens să aleagă DirectX, dacă vă sunt limitate la platforma Windows. Ei bine, pe Android, iOS bor nu trebuie să aleagă OpenGL.

Oh, ar fi atât de simplu cu OpenGL. Acum, oricum există standarde folosite 6 malosovmestimymi (2.1,3.3,4.h, ES 1.0, ES 2.0, ES 3.0), în care diferitele limbi shader, parțial (și, uneori, aproape complet) diferite API. Mai rău, nu există nici o implementare de referință și de control al calității foarte puțin. Ca urmare, cea mai mare parte a pieței PC-uri (Intel si AMD) OpenGL implementat strâmb, și pe telefoanele mobile, în plus față de partea conducătorului auto a curbei (pentru Adreno (ex-ATI, che aici doresc sa), sunt abordări foarte diferite pentru optimizare

Michael esti un pic greșit. DirectX este necesar de a alege doar un singur caz. Dacă doriți să limitați audiența nu este doar o vindous platformă, dar o versiune de Windows și potrivirea exactă pentru producătorii și computerul serie kopmletkuyuschih să-l folosească pentru a formula. Deși nimeni nu ar argumenta că un scris ispolzvaniem Direct va lucra la alte componente și chiar unele versiuni de Windows, toate la fel, pentru orice discrepanță imaginea va fi diferit în rău cât și performanța. În toate celelalte cazuri, în cazul în care un dezvoltator vrea să aducă creația sa în forma în care a făcut, trebuie doar să fie sigur de a alege OpenGL.

OpenGL pe un PC care rulează extrem de proastă. Șanse că va lucra la AMD puțin. Despre Intel nu am spus nimic. Utilizatorul, mai ales la porcul nu poate sta șoferii care îi va furniza o redare softvarny rece și sprijin mult API 1.1. În acest caz, există o șansă excelentă că jocul D3D va funcționa perfect.

crsib. Sper că ai propriile proiecte de joc. Este suficient că am văzut destul de cât de mult cod ar scrie că imaginea a fost pur și simplu peste tot în cazul în care există D3D9, nu voi argumenta că majoritatea programatorilor care folosesc DirectX nu sunt oameni leneși, în contrast cu prefera OpenGL, dar aceasta nu se adauga la demnitatea DirectX. În cele din urmă, pentru mine personal, un dezvoltatorii de cost măsură yavlyutsya ca în cazul directivelor în care în mod disproporționat cu mult mai puțin utile, ca rezultat al evacuare.

Am cumva doar acolo. Și pe OpenGL ES. Despre costurile forței de muncă nu primesc gluma. Monitoriza starea liniei de asamblare de pe OpenGL care încă chin, pentru că o mare parte din ea este oarecum încapsulat în grafica „primitivilor“. Păstrați codul pernosimym este tot staniu. ES 1 În general, nu există cerințe hardware de format de compresie textura, la ES 2.0 au săraci ETC. Ca urmare, pentru același android construiește trebuie să colecteze un teanc de texturi într-o varietate de formate. Nu vorbesc despre faptul că Mali și PowerVR și locuri Adreno abordări direct protivolopozhnye pentru a optimiza nivelul de OpenGL (în cazul în care abordarea „hardware“ de abstractizare). Despre PC-ul nu am vrut să vorbească. Datorită faptului că trebuie să lucrăm pe computerele mele în OpenGL va fi întotdeauna un accelerator de nVidia. Am ales prostește. Aproape că pot garanta că scrisul de conformitate cu codul standard de lucru / HD Intel GMA nu va fi greu de cap, chiar dacă am pus 10 drivere. Sau va funcționa, astfel încât ar fi mai bine să nu câștigat cinstit. Aproape aceeași poveste cu ATI / AMD, situația este un pic mai bine.

În general, comentariile tale sunt auzite în spiritul dezvoltator novice care tocmai a avut timp să treacă prin toate cercurile de dezvoltare Productions iadul pe OpenGL