Кіріспе

Apple Inc. QuickDraw 3D немесе қысқаша QD3D — Apple Inc. (кейін Apple Computer, Inc.) компаниясы 1995 жылдан бастап, бастапқыда Macintosh компьютерлері үшін, бірақ кросс-платформалық жүйе ретінде ұсынған 3D графикалық API. QD3D екі деңгейге бөлінді. RAVE (Rendering Acceleration Virtual Engine) деп аталатын төменгі деңгейдегі жүйе Direct3D сияқты немесе OpenGL-дің MiniGL сияқты қысқартылған нұсқаларымен аппараттық абстракция қабатын қамтамасыз етті. Осыдан жоғары, QD3D деп аталатын объектіге бағытталған көрініс графигі жүйесі болды, ол OpenGL++ деңгейіне ұқсас деңгейде модельдерді жүктеу және өңдеуді басқарды. Жүйе сонымен қатар файл форматтарын түрлендіруге арналған бірқатар жоғары деңгейлі құралдарды және Mac OS үшін стандартты көру бағдарламасын ұсынды. QD3D компьютер нарығында аз әсер етті, бұл Apple-дің 1990-шы жылдардың ортасындағы қиын жағдайының және дизайн тобының 3D аппараттық нарықтағы болашақ өзгерістер туралы жасаған бірнеше шешімдерінің нәтижесінде болды, алайда бұл өзгерістер орындалмады. Apple 1998 жылы Стив Джобс басқаруды қолға алғаннан кейін QD3D әзірлеуін тоқтатты және Mac OS-тегі болашақ 3D қолдауы OpenGL негізінде болатынын жариялады.

OpenGL 1990-шы жылдары

1990 жылдардың канондық 3D API OpenGL болды. Ол SGI компаниясымен жазылған және бастапқыда олардың жұмыс станциялары жүйелерінің мүмкіндіктеріне жақын болды, аппараттық абстракция қабаты ретінде жұмыс істеді. OpenGL API негізінен сурет салу режимдерін (мысалы, бояу түсі немесе камера позициясы) орнату үшін күйді орнату нұсқауларынан және жүйеге геометрияны жіберу жүйесінен, әдетте үшбұрыштардың торлары түрінде құралған. Бұл нұсқаулардың комбинациясы дисплей тізіміне сақталды, содан кейін нәтиже шығару үшін көрсетілді. OpenGL толық 3D бағдарлама жасау үшін қажетті көптеген мүмкіндіктерден мүлдем құралған жоқ. Геометриялық деректерді сақтау және жүктеу, оларды топтарға біріктіріп модельдік объектілерді жасау және күйді басқарудың бәрі бағдарламашыға қалдырылды. Бұл өнімділік шектеулі болған және осы функцияларды тікелей басқару арқылы өнімділікті жақсартуға болатын заманда артықшылық деп есептелді. Дегенмен, жоғары деңгейдегі функционалдың жоқтығы қарапайым бағдарламаларды жылдам жазуды қиындатты, сондай-ақ өзара қарым-қатынастың болмауына әкелді. OpenGL++ және (кейін) Fahrenheit сияқты стандартталған жоғары деңгейдегі API-лерді ұсынуға бірнеше әрекеттер жасалды, олар файлдардан геометрияны жүктеу және дисплейді қамтамасыз ету сияқты көптеген әдеттегі кітап жүргізу жұмыстарын орындады. Бұл стандартталған сахналық график жүйелері бағдарламашыға бағдарламаның графикалық интерфейсін ғана беруді талап етті. OpenGL көбінесе төмен деңгейлі болғанымен, ол SGI жүйелерінде ғана қолданылатын жоғары деңгейлі кейбір түсініктерді де қамтыды. Бұл осы мүмкіндіктерді жойып, оны әдеттегі аппараттық құралдарда жүзеге асыруды жеңілдетуге бағытталған тағы бір API сериясына әкелді. Олардың ең танымалсы – MiniGL, ол жеке API емес, OpenGL-дегі барлық аппараттық құралдарда қолдау көрсетілетін функциялардың тізімі, осылайша осы шақырулармен шектелген бағдарлама максималды өнімділікпен жұмыс істейтініне кепілдік береді.

QD3D

QD3D бастапқыда жұмыс станцияларына қарағанда едәуір аз қуатты компьютерлерде жұмыс істеу үшін жобаланған. Бұл API-дің жоғарғы және төменгі қабаттарын анық бөлуге бағытталған күш-жігерге әкелді, төменгі деңгейдегі RAVE жүйесі бастапқыда MiniGL-ге жақын болды. Бұл әртүрлі аппараттық құралдарға оңай түрлендірілетін таза және минималды API ұсынудың артықшылығын берді. Тек RAVE түрлендірілуі қажет болғандықтан, жоғарғы қабаттағы API-лер қалағанша күрделі болуы мүмкін, ал QD3D жүйесі толық көрініс графигін, стандартталған модель файл форматын, 3DMF-ті және тіпті оларды пайдаланатын қарапайым GUI элементтерін қамтыды. QD3D-де қарапайым қосымшаны жазу үшін бағдарламашыға тек бірнеше кітапхананы қосып, содан кейін ResEdit немесе ұқсас құралдарды пайдаланып GUI элементтерін бағдарламасына орналастыру қажет болды. Қосымша мүмкіндіктерге «қосылатын» рендеринг жүйесі кірді, ол қосымшаға көріністі әртүрлі стильдерде көрсетуге мүмкіндік берді. Әзірлеушілер модельді немесе кодын өзгертпей, бір көріністі интерактивті түрде немесе (тиісті плагиндермен) сәуле іздеу немесе Фонг көлеңкелендіру сияқты әдістерді қолдана алатын болды. QD3D API таза C кодына негізделген нысанаға ұқсас жүйе болды. Әртүрлі құрылымдар басқа маңызды нысандарға сілтемелерді қамту үшін мұқият құрылды. Нысандар оларға қажетті барлық сурет салу күйін білді, осылайша OpenGL-де дамыту кезінде қажет болатын кодты жояды. Алайда, QD3D қабатталуы өнімділік мәселелерін тудырды. Мысалы, жүйе әрбір нысанның күйін сурет салу алдында сақтап, автоматты түрде орнататын болды. Бұл дамуды әлдеқайда жеңілдетті, бірақ сонымен қатар өнімділіктің төмендеуіне әкелді, оған әзірлеуші тікелей бақылай алмады. Бағдарламалаудың қарапайымдылығынан гөрі өнімділікті қалайтын қосымшалар RAVE қабатын тікелей пайдалануды таңдай алатын болды. Тағы бір мәселе – көрініс графигі жасырылған, ал рендеринг өнімділігін жақсарту үшін, көзге көрінбейтін нысандарды алып тастау арқылы графикті мұқият «іріктеу» қажет болды. QD3D-нің кейінгі нұсқалары автоматты түрде көрінуді іріктеу мүмкіндігін (көрініс графигіндегі нысандарды топтастыруға негізделген) алса да, OpenGL-дің бұл мүмкіндікті қолдамауы әдетте әзірлеушілерді оны бастапқыдан бастап жүзеге асыруға мәжбүр етті.

OpenGL- ге ауысу

Жақсы төмен деңгейдегі 3D өнімділігі тек бағдарламалаушының тиімді модельдерді ұсынуына ғана емес, аппараттық жабдықтың жоғары сапалы драйверлеріне де байланысты. RAVE кросс-платформалық болу үшін жасалған болса да, Mac-ті қолдаған аппараттық әзірлеушілер (ATI, NVIDIA және 3dfx) ғана оған драйверлер жасады. Бұл QD3D мен балама API-лерді салыстыруды бір жақты қалдырды, себебі Mac-тен тыс QD3D бағдарламалық RAVE іске асырылымына көшуге мәжбүр болды. OpenGL Windows жүйесінде кең таралғанда (көбінесе id Software компаниясының арқасында, ол D3D-ге қарағанда осы API-ді жақтады), аппараттық әзірлеушілер болашақ аппараттық құралдарды Microsoft-тың D3D-ге жоспарланған мүмкіндіктер жиынтығына сәйкес жобалай бастады. OpenGL өз кеңейту механизмі арқылы осы өзгерістерді салыстырмалы түрде оңай қадағалай алды, ал RAVE мүмкіндіктері көбінесе өзгермейтін болды. 1999 жылғы қаңтарда Macworld Expo көрмесінде Apple компаниясы QuickDraw 3D және RAVE Mac OS X құрамына енгізілмейтінін хабарлады. Компания 1999 жылғы маусымда әзірлеушілерді жұмыстан босатып, өз технологиясын Conix Enterprises компаниясынан сатып алған Mac-ке арналған OpenGL іске асырылымымен және негізгі қызметкерлермен алмастырды. Apple QD3D қолдауын тоқтатқаннан кейін, QD3D API-нің ашық кодты нұсқасы сыртқы күштер тарапынан жасалды. Quesa деп аталатын бұл нұсқа QD3D-нің жоғары деңгейлі түсініктерін OpenGL рендерімен біріктіреді. Бұл кітапхана платформааралық аппараттық үдетуді қамтамасыз етумен қатар, QD3D API-ді Apple ешқашан қолдамаған платформаларда (мысалы, Linux) пайдалануға да мүмкіндік береді. Соңғы жаңарту 2023 жылы жасалды.