Ағылшыншамен салыстырыңыз: абзацты басыңыз — түпнұсқа терезеде ашылады. Абзац астындағы EN түймесі оны мәтін ішінде көрсетеді.
Мазмұны
Кіріспе
OpenGL++ туралы жалпы шолу
Overview of OpenGL++
OpenGL++ was a graphics library written in C++ that supported object oriented data structures on top of the OpenGL 3D graphics system. The project started as the result of a partnership between SGI, IBM and Intel, and later, Digital Equipment Corporation. It was intended to provide a higher level API than the "bare metal" support of OpenGL, as well as being an implementation for Java3D. Work on OpenGL++ ended when SGI decided to partner with Microsoft instead, leading to the Fahrenheit project, which also died.
OpenGL++ – OpenGL 3D графикалық жүйесі негізінде объектіге бағытталған деректер құрылымдарын қолдайтын C++ тілінде жазылған графикалық кітапхана. Жоба SGI, IBM және Intel, кейіннен Digital Equipment Corporation компанияларының серіктестігі нәтижесінде бастау алды. Оның мақсаты OpenGL-дің тікелей қолдауынан гөрі жоғары деңгейдегі API ұсыну, сондай-ақ Java3D үшін іске асыру болып табылды. SGI Microsoft компаниясымен серіктестікке түсуге шешім қабылдағанда OpenGL++ бойынша жұмыс тоқтатылды, бұл Fahrenheit жобасына әкелді, ол да сәтті болмады.
Overview of OpenGL++
OpenGL++ was a graphics library written in C++ that supported object oriented data structures on top of the OpenGL 3D graphics system. The project started as the result of a partnership between SGI, IBM and Intel, and later, Digital Equipment Corporation. It was intended to provide a higher level API than the "bare metal" support of OpenGL, as well as being an implementation for Java3D. Work on OpenGL++ ended when SGI decided to partner with Microsoft instead, leading to the Fahrenheit project, which also died.
Өмірбаян
3D жүйелерін пайдаланатын қолданбалардың басым көпшілігі өздерінің "дүниесіндегі" нысандарды сахналық граф деп аталатын дерек құрылымында сипаттайды. Сахналық граф әдетте ағаш тәрізді дерек құрылымы ретінде ұйымдастырылады, мұнда түйіндер нысандарды, ал қабырғалар олардың әлемдегі басқа нысандармен байланысын көрсетеді. Мысалы, үстел бір "кесте" нысанымен бейнеленуі мүмкін, оның бөліктері – үстел үсті, аяқтары сияқты – бірнеше қабырғалармен біріктірілген. 3D қолданбаларда жоғары өнімділіктің кілті – ағымдағы камераның орны мен бағытын ескере отырып, әлемдегі қандай нысандардың көрінетінін анықтау. Мысалы, камераның артындағы нысандарды салудың қажеті жоқ. Осы "іріктеу" операциясын жылдам орындау үшін сахналық графты жылдам аралау өте маңызды. Әдетте, сахналық графты жасау әзірлеушіге жүктелген, сондықтан нашар орындалған мысалдар жиі кездесіп, өнімділіктің төмендеуіне әкелетін. SGI әзірлеушіге жоғары сапалы сахналық граф жасауға көмектесетін бірнеше жобалармен жұмыс істеді, бірақ олардың ешқайсысы түрлі себептермен кеңінен таралған жоқ. Open Inventor осындай жобалардың бірі болатын, ол сахналық графты құруды жеңілдетуге бағытталған, бірақ нәтижелер міндетті түрде жоғары өнімділікке ие болмады. OpenGL Performer ұқсас жоба, ол жоғары жылдамдықты көріністерді жасауға және "дүниедегі" көптеген нысандарды қолдауға арналған, бірақ оны пайдалану оңай болмады.
The vast majority of applications using 3D systems describe the objects in their "world" in a data structure known as a scene graph. A scene graph is normally organized as some sort of a tree data structure, with the nodes representing objects, and the edges their relationship to other objects in the world. For instance, a table might be represented by a single "table" object with several edges connecting its parts together, the table top, legs, etc. Key to high performance in 3D applications is deciding what objects in the world are actually visible given the current camera position and direction. For instance, objects behind the camera do not have to be drawn. Quick traversal of the scene graph is essential to making this "culling" operation occur quickly. Scene graphs were generally left to the developer to implement, and it was all too common to see poor examples that led to poor performance. SGI had worked on a number of projects that were intended to help the developer produce a high quality scene graph, but none of these had become widely used for a variety of reasons. Open Inventor was one such example, and was intended to simplify building the scene graph, but the results were not necessarily very high performance. OpenGL Performer was a similar project that was intended to produce high speed scenes and support very large numbers of objects in the "world", but was not particularly easy to use.
Космо3D
Inventor және Performer командалары екі жүйені біріктіруге ешқандай себеп болмайтынын түсінді, осылайша дамудың қарапайымдылығы мен жоғары өнімділіктің екеуі де қол жеткізіледі. Бұл Cosmo3D жүйесін құруға әкелді, ол негізінен OpenGL-дің үстінде орналасқан, стандартталған жоғары өнімділік сахна графигі. Cosmo3D бүкіл сахналарды және оларды қайта құру үшін қажетті барлық деректерді сақтауға мүмкіндік беретін жаңа файл форматын енгізді – VRML форматы, ол бүгінге дейін қолданылуда. 1997 жыл бойы API-дың бірнеше нұсқалары таратылды. Дегенмен, ARB мынаны атап өтті: «Көп жұмыс жасалды, бірақ байланыс жеткіліксіз болды». OpenGL++ бойынша жұмыс жалғасқанда, Sun және SGI Java үшін қолайлы 3D стандарты бойынша да жұмыс істеп жатты. Аталған әрекеттер нәтижесіз аяқталып, Sun Java3D-ді жариялады. SGI өздерінің Cosmo жұмысы Java3D-нің прототипі болғанын және бұл жұмыс OpenGL++-қа дамыған сайын осы жоспарлармен бірге жүргенін мәлімдеді. OpenGL++ анықтамасы барысында Sun өздерінің Java3D жұмысына басымдық бергендіктен, бұл жобаға қатысуға қызығушылық танытпағанын хабарлады.
The Inventor and Performer teams had already realized that there was no particular reason the two systems could not be combined into one, offering both ease of development and high performance. This led to the Cosmo3D system, basically, a standardized high performance scene graph that sat on top of OpenGL. Cosmo3D introduced a new file format that could be used to store entire scenes and all the data needed to reconstruct them, the VRML format that is still in use. Development continued throughout 1997 including several distributions of the API. However, the ARB notes "There's been lots of work, but relatively little communication." While the work on OpenGL++ continued, Sun and SGI had also been working on a 3D standard suitable for Java. These efforts eventually broke down, and Sun went on to release Java3D. SGI suggested their Cosmo work was a sample Java3D implementation, and as this work evolved into OpenGL++ these plans moved with it. During the definition of OpenGL++, Sun stated that they were not interested in working on the effort as they were focussed on their Java3D work.
Соңында
1998 жылдың наурыз айында өткен АРБ отырысында SGI барлығына күтпеген жаңа жобаны – «Фаренгейтті» ұсынды. АРБ осы отырысқа қатысты жазбаларында: «SGI Windows ортасында құнды өнімдер құру үшін үйлесімді бағытта жылдамдамайтын Microsoft-пен бірлесіп жұмыс істеудің маңызды екенін түсінді. «Фаренгейт» осы бағыттағы маңызды қадам болды» делінген. OpenGL++ жобасы тоқтатылды. Бұл жоба SGI-нің сол кездегі басымдықтарының өзгеруіне байланысты, ірі компаниялармен серіктестік құру мақсатында бағытын өзгерту арқылы құрбан болды. Аталған компаниялар 3D кеңістігінен шығып, өзге өнімдерге көшкенде, SGI жобаны қолдаушы ретінде жалғыз қалды, осының алдын алуға тырысқан нәрсе осы болды. Соңында, 3D саласына баса назар аударған жалғыз компания Microsoft болды, ал «Фаренгейт» жобасы OpenGL++ жұмыстарынан кейін көп ұзамай басталып, аяқталды. Бүгінгі күні мұндай стандартталған көрініс графигі жоқ, ал SGI API әлемінен дерлік толығымен шықты. SGI бұрынғы Open Inventor кодын ашық дереккөздік код ретінде жариялады, бірақ OGL++ коды ешқашан толыққанды деңгейде аяқталған жоқ. Ақырғы дайын спецификация жоқ және OpenGL сияқты, мұндай ашық платформаның идеясы мен ерекшелігі оның ұзақ мерзімді құндылығын анықтаған болар еді, сахналық граф идеясының жалғыз іске асырылуы емес.
At the March 1998 ARB meeting, to everyone's surprise, SGI presented Fahrenheit, an entirely new project. The ARB notes from that meeting note "SGI felt it was critical to work together with Microsoft, which had not been moving in compatible directions, to be able to build value added products in the Windows environment. Fahrenheit is a large step in that direction." OpenGL++ was abandoned. The project appears to have been a victim of SGI's shifting priorities through this period, changing directions in order to partner with larger companies. When these companies exited the 3D space to focus on other product niches, SGI was left as the only supporter of the project, exactly what they were trying to avoid. Eventually, the only other company with a 3D focus was Microsoft, and the Fahrenheit project started and ended shortly after the OpenGL++ efforts. Today, no such standardized scene graph exists, and SGI has all but exited the API world. SGI has released the earlier Open Inventor code into open source, but the source to OGL++ was never completed to any satisfactory degree. No finalized specification exists and, as with OpenGL, the spec and idea behind such an open platform would have been what lent it its lasting value, not a single implementation of a scene graph idea.