tarafından geliştirildi | Silikon Grafik ve Khronos Grubu |
---|---|
İlk versiyon | Ocak 1994 |
Son sürüm | 4.6 (31 Temmuz 2017) |
Yazılmış | VS |
Tür |
Programlama arayüzü Yazılım kitaplığı Spesifikasyon |
İnternet sitesi | www.opengl.org |
Sürümlerin kronolojisi
OpenGL ( Open G raphics L ibrary ) bir olan fonksiyonların standardize seti için hesaplanırken 2D veya 3D görüntülerin başlattığı Silicon Graphics Bu 1992 yılında programlama arayüzü o modelleme yoluyla CAD video oyun arasında değişen uygulamalar için kullanılır nerede birçok platformlarda kullanılabilir.
OpenGL, bir programın nesnelerin geometrisini noktalar, vektörler, çokgenler, bitmapler ve dokular olarak bildirmesine izin verir. OpenGL daha sonra mesafe, yön, gölgeler, şeffaflık ve çerçevelemeyi dikkate alarak ekran görüntüsünü belirlemek için projeksiyon hesaplamaları yapar .
Arayüz, basit geometrik ilkellerden karmaşık üç boyutlu sahneleri görüntülemek için kullanılabilecek yaklaşık 250 farklı fonksiyona sahiptir. Açıklığı, kullanım esnekliği ve tüm platformlarda kullanılabilirliği nedeniyle, bilimsel, endüstriyel veya sanatsal 3B uygulamaların çoğu ve belirli 2B vektör uygulamaları tarafından kullanılmaktadır . Bu kütüphane de kullanılan video oyun endüstrisi bu rekabet içinde sık sık Microsoft'un kütüphanesinde : Direct3D . OpenGL ES adlı bir sürüm , özellikle yerleşik uygulamalar (cep telefonları, cep günlükleri, oyun konsolları vb.) için tasarlanmıştır.
OpenGL, Silicon Graphics (SGI) tarafından geliştirilen IrisGL, 3D API'nin bir evrimidir . İkincisinin geliştirilmesi ve genişletilmesi zor olduğundan, Silicon Graphics'te OpenGL'nin bir IrisGL üst kümesine benzetilebileceğine karar verildi. Temel özellikler ve geliştirmeler Silicon Graphics'ten bir ekip tarafından gerçekleştirildi. Microsoft ve Silicon Graphics'in bir girişimi olan Fahrenheit projesi , OpenGL ve Direct3D arayüzlerini birleştirmeye çalıştı . Bu, başlangıçta 3D API dünyasına düzen getirme umudunu getirdi, ancak Silicon Graphics'in mali kısıtlamaları nedeniyle proje terk edilmek zorunda kaldı.
OpenGL belirtimi şu anda 1992'de oluşturulan Mimari İnceleme Kurulu (ARB) tarafından denetlenmektedir . ARB, tutarlı ve yaygın olarak kullanılabilir bir API oluşturmaya büyük ilgi duyan şirketlerden oluşur. Resmi OpenGL web sitesine göre AMD / ATI , Apple , Dell , Evans & Sutherland , Hewlett-Packard , IBM , Intel , Matrox , Nvidia , SGI ve Sun oy kullanan üyeler arasında (Haziran 2002). Kurucu üyelerden Microsoft , geri çekildiMart 2003.
29 Temmuz 2003OpenGL 1.5 duyuruldu. Aynı zamanda ARB, OpenGL Shading Language'in ilk taslağının yanı sıra ARB_shader_objects , ARB_vertex_shader ve ARB_fragment_shader uzantılarının üç uzantısının özelliklerini de duyuruyor .
7 Eylül 2004OpenGL 2.0 duyuruldu. OpenGL Gölgelendirme Dil ( GLSL da lakaplı GLslang C diline benzer bir sözdizimi ile) kesin sürümünde yer almaktadır.
31 Temmuz 2006Siggraph konferansında ARB, OpenGL spesifikasyonunun kontrolünü, OpenGL ES dahil olmak üzere gömülü sistemler ve video oyun konsolları için çeşitli OpenGL spesifikasyonlarını halihazırda ele alan Khronos Group'a devretme kararını duyurdu . Mimari İnceleme Kurulu feshedildi21 Eylül 2006, ancak tarihsel nedenlerle “ARB” kısaltması korunmuştur.
OpenGL 3.0'ın resmi özellikleri 11 Ağustos 2008'de yayınlandı. Başlangıçta OpenGL 3'ün Direct3D ile daha rekabetçi hale getirmek için eksiksiz bir API revizyonu ile büyük bir değişiklik olması gerekiyordu . Bu özellikle, o zamana kadar yalnızca eski sürümlerle uyumluluk adına tutulan eski işlevselliklerin terk edilmesi, özellikle durumları kapsayan yeni, daha tutarlı bir nesne modelinin kullanılması vb. bir sorundu. Ancak, bir yıllık gecikme ve Khronos grubuyla tam bir iletişim eksikliğinden sonra, bu toplam revizyon, yalnızca en son grafik teknolojilerini desteklemek için artımlı bir güncelleme lehine terk edildi . Bu karar, örneğin bu eski işlevlerin ortadan kalkmasını istemeyen CAD gibi belirli pazarlara güvence verme arzusundan kaynaklanacaktır . Ancak, eski işlevler yeni özelliklerde " kullanımdan kaldırıldı " olarak işaretlenecek ve gelecekteki sürümlerde kaldırılabilir.
OpenGL 3.1'in spesifikasyonları 28 Mayıs 2009'da yayınlandı. OpenGL 3.0'da eski olduğu bildirilen tüm özellikleri kaldırır.
OpenGL 3.2 spesifikasyonları 3 Ağustos 2009'da yayınlandı. Spesifikasyonlar 2'ye bölünmüştür; ana profil ( temel profil ) ve uyumlu profil ( uyumluluk profili ).
Yayınlanmasının yanı sıra GLSL 1.50 gölgelendirici dili spesifikasyonunun yayınlanmasıdır.
OpenGL 3.3'ün özellikleri 11 Mart 2010'da yayınlandı, bunlar 3.3 serisinin son özellikleridir. OpenGL 3.2'de olduğu gibi, bir ana profil ve uyumlu bir profil vardır .
Bu sürüm genellikle yazılımı OpenGL'den Vulkan'a taşımadan önce ulaşılması gereken önemli bir sürüm olarak kullanılır.
11 Mart 2010, OpenGL 4.0 duyuruldu, DirectX 11 ile uyumlu donanımdan tam anlamıyla yararlanmayı hedefliyor .
Aynı zamanda OpenGL 3.3 de duyuruldu.
Adı altında ilan başında OpenGL Sonraki , Vulkan olan ilk sürümü beri 3D grafik işlemcilerin evrim 25 yıl uyum amacıyla OpenGL önemli kavramları gözden. Eski sürümlerle uyumluluk artık garanti edilmemektedir.
En dikkate değer değişiklikler şunlardır:
OpenGL standardı, farklı üreticilerin uzantılar biçiminde yeni işlevler eklemesine olanak tanır . Bir uzantı 2 parça halinde dağıtılır: uzantının prototip işlevlerini ve üreticinin sürücülerini içeren bir başlık dosyası. Her birinin yeni fonksiyonlarını ve sabitlerini adlandırmak için kullanılan bir kısaltması vardır. Örneğin, nVidia ("NV") kısaltması, "glCombinerParameterfvNV ()" tescilli işlevlerini ve "GL_NORMAL_MAP_NV" sabitlerini tanımlamak için kullanılır . Birden fazla üreticinin aynı işlevi uygulaması olabilir. Bu durumda “EXT” kısaltması kullanılır. ARB bir uzantıyı resmileştirebilir. Bu daha sonra bir standart haline gelir ve “ARB” kısaltması kullanılır. İlk ARB uzantısı GL_ARB_multitexture idi.
OpenGL kitaplığında bulunmayan işlevleri sağlamak için OpenGL'den çeşitli kitaplıklar geliştirilmiştir:
Özellikle, Silicon Graphics tarafından geliştirilen ve IRIX , Linux ve bazı Windows sürümleri için mevcut olan ve gerçek zamanlı işleme uygulamalarının oluşturulmasına izin veren OpenGL Performer kitaplığına dikkat edin .
İşte 2 boyutlu basit bir program, bir üçgen çiziyor ve r, g, b tuşlarından birine ve R, G, B ile alttakine basarak rengini anında değiştirmenize izin veriyor. q tuşu programdan çıkıyor. Kullanan Bunda, GLUT programlama basitleştirmek için (bunu yüklemeden düşünmek Synaptic'ten veya diğer), Linux veya altında derlenmiş ve yürütülür , Windows 10 altında WSL tarafından, cc colorswap.c -lglut -lGL -lGLU && ./a.out. OpenGL kitaplıkları, belirli dağıtımınızın depolarından kurulacaktır. Buradaki kodun amacı performans değil okunabilirliktir.
/* * colorswap.c - Options -lglut -lGL -lGLU : * cc colorswap.c -lglut -lGL -lGLU && ./a.out * * Donnez le focus à la fenêtre, puis pressez : * R G B ou Y pour couleur du fond * r g b ou y pour celle de l'encre * q pour quitter. * * Programme écrit sous OpenSuSE avec Geany sous * Sony Satellite G50 bootant Linux d'un SSD USB3 * en inhibant le secure boot et en donnant la * priorité de boot à l'USB. */ #include <GL/glut.h> int firstPass = 1; // simule le « once » d'Eiffel // Fonction associée (« callback ») à la fenêtre. // Elle redessine tout quand on redimensionne. void Rafraichir(void) { glClear(GL_COLOR_BUFFER_BIT); // Effacer la surface graphique if (firstPass) { glColor3f(0, 0, 1.0); // Encre bleue au départ firstPass = 0; } // Dessiner un triangle glBegin(GL_POLYGON); // Commencer un polygone glVertex2i(100, 100); // Coordonnées des trois points glVertex2i(400, 100); glVertex2i(250, 400); glEnd(); // Fermer le polygone glFlush(); // Dessiner le polygone } // Action sur frappe d'une touche au clavier void Clavier(unsigned char key, int x, int y) { switch(key) { case 'q' : exit(0); // q => « quitter » case 'R' : glClearColor(1, 0, 0, 0); break; // R G B : couleur fond case 'G' : glClearColor(0, 1, 0, 0); break; case 'B' : glClearColor(0, 0, 1, 0); break; case 'Y' : glClearColor(1, 1, 0, 0); break; // Y : jaune case 'r' : glColor3f(1, 0, 0); break; // r g b : couleur encre case 'g' : glColor3f(0, 1, 0); break; case 'b' : glColor3f(0, 0, 1); break; case 'y' : glColor3f(1, 1, 0); break; // y ; jaune } Rafraichir(); // Affichage } int main(int argc, char *argv[]) { int win; // Identificateur de fenêtre (une seule) glutInit(&argc, argv); // initialise GLUT glutInitDisplayMode(GLUT_RGB); // On travaille en RGB glutInitWindowSize(500,400); // 500px large, 400px haut win = glutCreateWindow("Pressez r/g/b/y/R/G/B/Y/q"); // Ordres maintenant exécutés dans la fenêtre « win » glClearColor(0.9, 0.9, 0.2, 0); // Jaune gluOrtho2D(0,600,0,600); // On garde ces coordonnées glutDisplayFunc(Rafraichir); // Callback de la fenêtre glutKeyboardFunc(Clavier); // Callback du clavier glutMainLoop(); // Boucle infinie /* Le programme n'atteint jamais ce point */ return 0; }Windows, birçok Unix istasyonu ve Mac OS için OpenGL'nin (donanım tarafından sağlanan 3B hızlandırmayı kullanan) çeşitli uygulamaları mevcuttur . Bu uygulamalar genellikle grafik donanımı üreticileri tarafından sağlanır ve bunlarla yakından ilişkilidir. 1993 yılında Brian Paul tarafından oluşturulan ve aynı API'yi kullanan Mesa adlı bu kitaplığın ücretsiz bir uygulaması vardır :
Silicon Graphics'in politikası , GL'nin grafik kitaplığı olan GL'nin sondan bir önceki sürümünü kamu malı olarak yayınlamaktır. Bu yaklaşım :
Bazı yazılımlar onların tüm arayüz, hatta gibi 2D, yönetmek için OpenGL kullanan Blender'da , Google Earth'ü (OpenGL versiyonu), GLTron, XBMC'yi veya SGI sürümünü ait X11 .
Rich Geldreich ve Joshua Barczak kişisel bloglarında OpenGL'yi eleştiriyor. Şikayetleri, bir yandan edinilen deneyimler ışığında tam bir revizyon ihtiyacını, diğer yandan da portajların dağılımını daha iyi kontrol etme ihtiyacını ortaya koyuyor. Ancak bunlar, 2014 ekran kartlarının en gelişmiş özelliklerini kullanması gereken yüksek teknoloji kullanıcılarıdır.