約 4,328,725 件
https://w.atwiki.jp/opengl/pages/286.html
こちらに OpenGL Simple Adapter があるので使わせてもらいます。 nursの日記http //d.hatena.ne.jp/nurs/20080315/1205598655 使い方は OpenGL Simple Adapter.h をインクルードして OpenGLSimpleAdapter のインスタンスを作成して GLAdapter- BeginRender(); と GLAdapter- EndRender(); の間に いつもの OpenGL のコードを記述するだけです。 OpenGL Simple Adapter.h #pragma once #pragma comment( lib, opengl32.lib ) #pragma comment( lib, glu32.lib ) #pragma comment( lib, gdi32.lib ) #pragma comment( lib, User32.lib ) #include windows.h #include gl/gl.h #include gl/glu.h //↑こいつの#include は、たぶんこことかではなく、 // コードの中でもusing namespace System;とか記述する // よりも前にしないと、C2872 に苦しめられることになる。 public ref class OpenGLSimpleAdapter // ↑CLRでやる場合は、class の前に、public ref を入れてね { // // OpenGL Simple Adaptor loOGLHost (C) 2008 nurs // // 使い方: // 1)本クラスのインスタンスを、ターゲットビューのメンバとして作成する。 // コンストラクタのHDCは、Win32なら // ⇒ GetDC( this- GetSafeHwnd() ) ); // CLRのFormなら、 // ⇒ GetDC( (HWND)parentForm- Handle.ToPointer() ); // などとして取ってきます。 // 2)ターゲットビューの、適切な箇所(初期化、描画、リサイズ)にて、 // 本ホストの、BeginRender()と、EndRender() を呼び出し、その間に、 // 目的のOpenGL描画コードを記述します。 // *)ちなみに利用側コードのどこかのcpp内にて、 //#pragma comment( lib, opengl32.lib ) //#pragma comment( lib, glu32.lib ) //#pragma comment( lib, gdi32.lib ) //#pragma comment( lib, User32.lib ) // の記述も、忘れないで下さい。 // // ★RenderPolicyを予め作成しておき、必要なときに必要な描画 // ポリシーで、Render() をかける、という使い方もできます。 // ★注意:WindowsForm、.NET環境の場合は、プロジェクトの共通言語 // ランタイムサポートを、/clr pure ではなく、/clr にする。 // // public OpenGLSimpleAdapter( HDC dc ){ if(dc==0) return; m_hdc = dc; { static PIXELFORMATDESCRIPTOR pfd={ sizeof(PIXELFORMATDESCRIPTOR), 1, PFD_DRAW_TO_WINDOW | PFD_SUPPORT_OPENGL | PFD_DOUBLEBUFFER, PFD_TYPE_RGBA, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, PFD_MAIN_PLANE, 0, 0, 0, 0 }; GLint iPixelFormat; if( (iPixelFormat = ChoosePixelFormat(m_hdc, pfd) ) == 0) return; if(SetPixelFormat(m_hdc, iPixelFormat, pfd) == FALSE) return; } if( (m_hglrc = wglCreateContext(m_hdc) )==0) return; // pure Managed だとランタイムでエラーに if( (wglMakeCurrent(m_hdc, m_hglrc) )==0) return; wglMakeCurrent(0, 0); return; } ~OpenGLSimpleAdapter( void ){} template class RenderPolicy void Render( RenderPolicy po ){ wglMakeCurrent( this- m_hdc, this- m_hglrc ); po(); wglMakeCurrent( this- m_hdc, 0 ); SwapBuffers( this- m_hdc ); } HDC BeginRender( void ){ wglMakeCurrent( this- m_hdc, this- m_hglrc ); return this- m_hdc; } void EndRender( void ){ wglMakeCurrent( this- m_hdc, 0 ); SwapBuffers( this- m_hdc ); } void EndRenderNoSwap( void ){ wglMakeCurrent( this- m_hdc, 0 ); } private HDC m_hdc; HGLRC m_hglrc; }; /*使用例 まず、OpenGLSimpleAdapterのインスタンスを作成します。 そして、BeginRender() と、EndRender() の間に目的のOpenGLのgl描画コードを書きます。 private System Void Form1_Load(System Object^ sender, System EventArgs^ e) { GLAdapter = gcnew OpenGLSimpleAdapter(GetDC( (HWND)panel1- Handle.ToPointer() )); } private System Void panel1_Paint(System Object^ sender, System Windows Forms PaintEventArgs^ e) { GLAdapter- BeginRender(); { glClearColor( 0,0,0,0 ); glClear( GL_DEPTH_BUFFER_BIT | GL_COLOR_BUFFER_BIT ); } GLAdapter- EndRender(); } */ MyForm.cpp #pragma comment(linker, /SUBSYSTEM WINDOWS /ENTRY mainCRTStartup ) #include MyForm.h using namespace opengl; [STAThreadAttribute] int main(){ MyForm ^form1 = gcnew MyForm; form1- ShowDialog(); return 0; } MyForm.h #pragma once #include OpenGL Simple Adapter.h namespace opengl { using namespace System; using namespace System ComponentModel; using namespace System Collections; using namespace System Windows Forms; using namespace System Data; using namespace System Drawing; /// summary /// MyForm の概要 /// /summary public ref class MyForm public System Windows Forms Form { public MyForm(void) { InitializeComponent(); // //TODO ここにコンストラクター コードを追加します // } protected /// summary /// 使用中のリソースをすべてクリーンアップします。 /// /summary ~MyForm() { if (components) { delete components; } } private System Windows Forms Panel^ panel1; protected private /// summary /// 必要なデザイナー変数です。 /// /summary System ComponentModel Container ^components; #pragma region Windows Form Designer generated code /// summary /// デザイナー サポートに必要なメソッドです。このメソッドの内容を /// コード エディターで変更しないでください。 /// /summary void InitializeComponent(void) { this- panel1 = (gcnew System Windows Forms Panel()); this- SuspendLayout(); // // panel1 // this- panel1- Location = System Drawing Point(24, 24); this- panel1- Name = L panel1 ; this- panel1- Size = System Drawing Size(218, 182); this- panel1- TabIndex = 0; this- panel1- Paint += gcnew System Windows Forms PaintEventHandler(this, MyForm panel1_Paint); // // MyForm // this- AutoScaleDimensions = System Drawing SizeF(6, 12); this- AutoScaleMode = System Windows Forms AutoScaleMode Font; this- ClientSize = System Drawing Size(284, 261); this- Controls- Add(this- panel1); this- Name = L MyForm ; this- Text = L MyForm ; this- ResumeLayout(false); } #pragma endregion void Line2D(int x1,int y1,int x2, int y2,float size){ glLineWidth(size); glBegin(GL_LINES); glVertex2i(x1,y1); glVertex2i(x2,y2); glEnd(); } private System Void panel1_Paint(System Object^ sender, System Windows Forms PaintEventArgs^ e) { OpenGLSimpleAdapter^ GLAdapter = gcnew OpenGLSimpleAdapter(GetDC( (HWND)panel1- Handle.ToPointer() )); GLAdapter- BeginRender(); { glClearColor( 0,0,0,0 ); glClear( GL_DEPTH_BUFFER_BIT | GL_COLOR_BUFFER_BIT ); glOrtho(0, panel1- Width, panel1- Height, 0, -1, 1); glColor4f(1.0f,1.0f,1.0f,1.0f); Line2D(20,40,200,180,1.0); } GLAdapter- EndRender(); } }; }
https://w.atwiki.jp/opengles/pages/23.html
OpenGL® ES is a software interface to graphics hardware. The interface consists of a set of procedures and functions that allow a programmer to specify the objects and operations involved in producing high-quality graphical images, specifically color images of three-dimensional objects. [n.n.n] refers to sections and tables in the OpenGL ES 2.0 specification. [n.n.n] refers to sections in the OpenGL ES Shading Language 1.0 specification. Specifications are available at www.opengl.org/registry/gles
https://w.atwiki.jp/opengl/pages/14.html
なぜ、DirectXではなくOpenGLなのか? 最新のグラフィックス、最速の描画を行うのであれば間違いなくDirectXがベストですが、 3Dを勉強したい、ころころ変わるDirectXにはついて行けないという方、いろんなOSで シェーダーモデル5.0を使いたいという方にはOpenGLをおススメします。 OpenGL 4.0 OpenGL4.0を駆使すれば、MacOSやLinux、Windows XP、Vista、7、8の4世代のWindowsに渡って DirectX 11世代のシェーダーモデル5.0を使う事ができます。 DirectXより簡単 当サイト管理人の感想ですが、DirectXに比べてOpenGLは割と簡単な印象を受けます。 業界標準となる可能性 OpenGLが右手座標系、DirectXが左手座標系を採用しているのは大きな明暗。 数学やほとんどの3Dアプリでは右手座標系を使用しています。 ODEやOpenALなども、そうです。つまり右手座標系が業界標準だったのです。 最近ではDirectXも左手座標系と右手座標系を選べるようになったのですが、 統一されていないのは混乱を招く種です。 また、OpenGLはプレイステーション1,2,3、iphoneアプリなどのSDKとして 採用されています。 C/C++を使う理由 言うまでもなく、豊富な各種ライブラリと過去の遺産を無駄にする事なく プログラミングするためです。 実行速度という点では、アセンブラに劣るでしょうが、VisualC++の場合、 MASMがインラインアセンブラで使えます。 GUIに関してはC#、VisualBasic、JAVA + Swingに、分があるように感じるかも しれませんが、.NET Frameworkでしたら、C++/CLIを用いる事でC#と同等の GUIができます。 さらに、C++/CLIの言語仕様もJAVAのような完全なオブジェクト指向ではないため、 オブジェクトが存在しなかった時の例外処理等を記述しなくても良く、 非常に楽をする事ができます。 C#で追加されたガベージコレクションやファイナライザといった機能も併せ持って いる上に、単純に同じようなアプリケーションを作成した場合、C#製の物よりも C++/CLI製の.NETアプリの方が速いようです。 つまり、現時点でWindows環境下において、究極の開発言語という事になります。 freeglutを使う理由 これも言うまでもなく、圧倒的にプログラムコード量を減らし楽をするためです。 また、単純にOpenGLの使い方を覚える点で面倒な初期化関連やウインドウの 作成などの手間を省くためです。 「こんなに簡単にOpenGLプログラミングできるんだ」という事を体験するには freeglutが1番適していると思ったからです。 var so = new SWFObject( http //chuka-tube.com/wp-content/themes/141210_pc/jw/player.swf , mpl , 426 , 320 , 9 ); so.addParam( allowfullscreen , true ); so.addParam( allowscriptaccess , always ); so.addParam( wmode , opaque ); so.addVariable( file , http //dd.yinyuetai.com/uploads/videos/common/F25901494A27F1964FD2A25634ABD357.mp4?sc=dac1ced33549d3a4 ); so.addVariable( image , http //img.chuka-tube.com/music/26/2164508.jpg ); so.addVariable( provider , http ); so.addVariable( autostart , false ); so.addVariable( backcolor , EEEEEE ); so.addVariable( frontcolor , 666666 ); so.addVariable( lightcolor , 888888 ); so.addVariable( screencolor , 000000 ); so.addVariable( volume , 100 ); so.write( mediaspace );
https://w.atwiki.jp/usonx/pages/21.html
VC++(MFC)とOpenGL MFCとOpenGLの親和性は高い。逆にMFCとDirectXの親和性は低く、現在のバージョンにおいて、MFC+DirectXの組み合わせは難しい。理由としては、そもそもDirectX自体がMFCを前提としなくなったこと。SampleからMFCtex(MFC+DirectXのサンプル)が消えている。MFCtexがあるバージョンは、DirectX9(2003)のようだが、探した限りではMicrosoft上には見当たらなかった(仮にあったとしてもVC++6のものとなる。VC++2005では、そのままコンパイルできない)。 OpenGLのインストール 1.GLUTのダウンロード 下記サイトから"glut-3.7.6-bin.zip"をダウンロードし、適当なフォルダに解凍する。 http //www.xmission.com/~nate/glut.html 2.ファイルのコピー 解凍したファイルを下記ディレクトリに移動する。フォルダ名は環境によって若干異なる。.hは、GLフォルダを作りその中に入れること。 glut.h → C \Program Files\Microsoft Visual Studio\VC98\Include\GL .lib → C \Program Files\Microsoft Visual Studio\VC98\Lib .dll → C \WINDOWS\SYSTEM32 MFC(ダイアログベース)+OpenGL プロジェクト名をhogeとすると、 1.ヘッダファイルの記述 クラスChogeDlgに以下includeを追加 \#include GL/glaux.h 2.メンバ変数の追加 クラスChogeDlgに以下変数を追加する CDC* m_pDC; HGLRC m_GLRC; 3.メンバ関数の追加 int ChogeDlg SetDCPixelFormat(HDC hdc) { static PIXELFORMATDESCRIPTOR pfd = { sizeof (PIXELFORMATDESCRIPTOR),// Size of this structure 1,// Version number PFD_DRAW_TO_WINDOW |// Flags PFD_SUPPORT_OPENGL | PFD_DOUBLEBUFFER, PFD_TYPE_RGBA,// RGBA pixel values 24,// 24-bit color 0, 0, 0, 0, 0, 0,// Don t care about these 0, 0,// No alpha buffer 0, 0, 0, 0, 0,// No accumulation buffer 32,// 32-bit depth buffer 0,// No stencil buffer 0,// No auxiliary buffers PFD_MAIN_PLANE,// Layer type 0,// Reserved (must be 0) 0, 0, 0// No layer masks }; int nPixelFormat; nPixelFormat = ChoosePixelFormat (hdc, pfd); if (SetPixelFormat(hdc, nPixelFormat, pfd) == FALSE){ // SetPixelFormat error return FALSE ; } if (DescribePixelFormat(hdc, nPixelFormat, sizeof(PIXELFORMATDESCRIPTOR), pfd) == 0) { // DescribePixelFormat error return FALSE ; } if (pfd.dwFlags PFD_NEED_PALETTE) { // Need palete ! } return TRUE ; } void ChogeDlg InitGL() { m_pDC = new CClientDC(this); // Get device context SetDCPixelFormat(m_pDC- m_hDC); // Set OpenGL pixel format m_GLRC = wglCreateContext (m_pDC- m_hDC); // Create rendering context wglMakeCurrent (m_pDC- m_hDC, m_GLRC); // Current context set glClearColor(0.0f, 0.0f, 0.5f, 1.0f); } void ChogeDlg DrawGL() { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT) ; } BOOL ChogeDlg OnInitDialog() の return TRUE; の上に InitGL(); を追加する. ClassView@ChogeDlg→メッセージ で WM_DESTROY をダブルクリックし, OnDestroy を呼ぶ. void ChogeDlg OnDestroy() { CView OnDestroy(); // TODO この位置にメッセージ ハンドラ用のコードを追加してください wglMakeCurrent(NULL, NULL); // free current context wglDeleteContext(m_GLRC); // Delete rendering context delete m_pDC; // Release device context } OnPaint に以下の文を追加. void COpenGLTest2Dlg OnPaint() { if (IsIconic()) { CPaintDC dc(this); // 描画用のデバイス コンテキスト SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0); // クライアントの矩形領域内の中央 int cxIcon = GetSystemMetrics(SM_CXICON); int cyIcon = GetSystemMetrics(SM_CYICON); CRect rect; GetClientRect( rect); int x = (rect.Width() - cxIcon + 1) / 2; int y = (rect.Height() - cyIcon + 1) / 2; // アイコンを描画します。 dc.DrawIcon(x, y, m_hIcon); } else { CDialog OnPaint(); DrawGL(); //これを追加 SwapBuffers(m_pDC- m_hDC); //これを追加 } } Pictureコントロール上に描画するには、 ダイアログにピクチャボックスを設置する.(大きさは適当) ID→ID_PICT に書き換え,クラスウィザードで ID_PICT の変数を追加する. コントロールID タイプ メンバ IDC_PICT CStatic m_Pict InitGL() に一文を追加する. void COpenGLTest2Dlg InitGL() { m_pDC = new CClientDC(this); m_pDC- m_hDC = m_Pict.GetDC()- GetSafeHdc(); //これを追加 SetDCPixelFormat(m_pDC- m_hDC); m_GLRC = wglCreateContext (m_pDC- m_hDC); wglMakeCurrent (m_pDC- m_hDC, m_GLRC); glClearColor(0.0f, 0.0f, 0.5f, 1.0f); }
https://w.atwiki.jp/opengl/pages/186.html
OpenGLのバージョンとGPUの情報を取得します。 ファイル main.cpp main.cpp #include stdio.h #include GL/freeglut/freeglut.h int main(int argc, char *argv[]) { glutInitWindowPosition(10, 10); glutInitWindowSize(10, 10); glutInit( argc, argv); glutCreateWindow( Check OpenGL ); printf( OpenGLのバージョン %s\n ,glGetString(GL_VERSION)); printf( ハードウェアベンダー %s\n ,glGetString(GL_VENDOR)); printf( GPU %s\n ,glGetString(GL_RENDERER)); getchar(); return 0; }
https://w.atwiki.jp/bambooflow/pages/197.html
OpenGLのメモ書き OpenGLは世代(バージョン)によってコーディング方法に互換性がありません。 そのため世代に合わせたコーディングスタイルを身につけなければなりません。 大きく分類と、次の2つに分けられます。 固定機能シェーダ プログラマブルシェーダ ここでは、 OpenGL2.xまでは主に固定機能シェーダについて、 OpenGL3.x以上からは主にプログラマブルシェーダについて述べたいと思います。 OpenGL1.x OpenGL2.x (OpenGL ES1) OpenGL3.x - core profile (OpenGL ES2) History QtでOpenGL OpenGLツール glut glew - OpenGL4.xを試すには必須 gl3w - OpenGL3.x 4.x core profile GLM - OpenGL Mathematics SDL デバッグツール glslDevil gDEBuggerに似たGUIデバッグツール,GLSL対応 gDEBugger freeになったようです。 BuGLe (OpenGLデバッガ) 参考 http //www.opengl.org/wiki/
https://w.atwiki.jp/opengles/pages/24.html
Open GL ES commands are formed from a return type, a name, and optionally a type letter i for 32-bit int, or f for 32-bit float, as shown by the prototype below return-type Name{1234}{if}{v} ([args ,] T arg1 , . . . , T argN [, args]); The arguments enclosed in brackets ([args ,] and [, args]) may or may not be present. The argument type T and the number N of arguments may be indicated by the command name suffixes. N is 1, 2, 3, or 4 if present, or else corresponds to the type letters. If “v” is present, an array of N items is passed by a pointer. For brevity, the OpenGL documentation and this reference may omit the standard prefixes. The actual names are of the forms glFunctionName(), GL_CONSTANT, GLtype
https://w.atwiki.jp/pspt/pages/248.html
OpenGL OpenGLはグラフィックスハードウェアのAPI。 2次元・3次元コンピュータグラフィックス両方が扱えどのOSでも使う事ができる。 他のグラフィックスハードウェアのAPIはMS社のDirectXなどがある。 OpenGL導入の仕方(osがwindowsで開発環境がvisual c++の場合) OpenGLのHello world 二次元の図形を表示させたい! 参考 導入の仕方(osがwindowsで開発環境がvisual c++の場合) OpenGL自体はどのosにも大抵入っているが動かせるようにするにはちょっとした手続きが必要です。 まずここからglut-3.7.6-bin.zipをダウンロードし解凍しましょう。 glut32.dll glut32.lib glut.h というファイルがあるのでdllをOSが 32bitならC \Windows\System32に 64bitならC \Windows\SysWOW64に に置きましょう。 続いてglut.hを\Microsoft Visual Studio 11.0\VC\include\gl(glがなければ作る) glut32.libを\Microsoft Visual Studio 11.0\VC\lib に置きましょう。 これで#include gl/glut.h とおいてコンパイルエラーが起こらなければ成功です。 設定はこれだけです。 注意 glut.hをインクルードする時はstdio.hとstdlib.hを先頭にして下さい。 OpenGLのHello world #include GL/glut.h void display(void) { } int main(int argc, char *argv[]) { glutInit( argc, argv); glutCreateWindow("hello world"); glutDisplayFunc(display); glutMainLoop(); return 0; } void glutInit(int *argc, char **argv) GLUT および OpenGL 環境を初期化します。 引数には main の引数をそのまま渡します. X Window で使われるオプション -display などはここで処理されます. この関数によって引数の内容が変更されます. int glutCreateWindow(char *name) ウィンドウを開きます. 引数 name はそのウィンドウの名前の文字列で, タイトルバーなどに表示されます. void glutDisplayFunc(void (*func)(void)) 引数 func は開いたウィンドウ内に描画する関数へのポインタです. ウィンドウが開かれたり, 他のウィンドウによって隠されたウィンドウが再び現れたりして, ウィンドウを再描画する必要があるときに, この関数が実行されます. したがって, この関数内で図形表示を行います. void glutMainLoop(void) これは無限ループです. この関数を呼び出すことで, プログラムはイベントの待ち受け状態になります. この関数がないとウィンドウが一瞬で消えてしまいます。 図形の描写はdiplay関数内で行われます。 二次元の図形を表示させたい! 参考 GLUTによる「手抜き」OpenGL入門 http //www.wakayama-u.ac.jp/~tokoi/opengl/libglut.html OpenGL de プログラミング http //wiki.livedoor.jp/mikk_ni3_92/
https://w.atwiki.jp/cglab/pages/22.html
初心者向けチュートリアル 筑波大学岩田研究室 OpenGLのゼミの資料を公開なさっています。 ◆◇ 高速OpenGL講座 ◇◆ 九州大学 大学院 のOpenGL講座 内容を絞ってあるので、コストパフォーマンスに優れます。しかし、auxライブラリを使用しているのでglutへの修正が必要です。ちなみにauxライブラリはglutライブラリの1世代前のライブラリです。 ピックアップ処理 ピックアップ処理とは、マウスで3Dオブジェクトを選択することです。これを行うことによりドラッグで移動、スケーリング、回転といった操作が可能になります。 OpenGL de プログラミング ピックアップ処理 マウスでクリックした場所の3次元位置を求めるには? 和歌山大学床井研究室
https://w.atwiki.jp/bambooflow/pages/250.html
ヒストリ 勉強のため整理。 知識不足なので、まずはバージョンごとにどんな機能が使えるのかをしるために。 ヒストリOpenGL 1.0 OpenGL 1.1対応カード 拡張 OpenGL 1.2対応カード 拡張 OpenGL 1.2.1対応カード 拡張 OpenGL 1.3対応カード 拡張 OpenGL 1.4対応カード 拡張 OpenGL 1.5対応カード 拡張 OpenGL 2.0対応カード 拡張 OpenGL 2.1対応カード 拡張 OpenGL 3.0対応カード 拡張 OpenGL 3.1対応カード OpenGL 3.2対応カード OpenGL 3.3 OpenGL 4.0 OpenGL 4.1 参考 OpenGL 1.0 1992年1月リリース OpenGL 1.1 1997年1月リリース GPUハードウェア上でテクスチャについてサポート。 対応カード すべて。 拡張 Extension Extension ID Functions 頂点配列 EXT_vertex_array glVertexPointer, glColorPointer, glNormalPointer ポリゴン・オフセット (depth biasing) EXT_polygon_offset glPolygonOffset RGBA混合 EXT_blend_logic_op glBlendFunc テクスチャ・コピー/Subコピー EXT_subtexture, EXT_copy_texture glTexSubImage1D/2D/3D テクスチャ・フォーマット EXT_texture RGB, LUMINANCE, ALPHA, INTENSITY (in glTexImage2D) テクスチャ・オブジェクト EXT_texture_object glGenTextures, glBindTextures OpenGL 1.2 1998年3月リリース ボリュームテクスチャ パックドピクセル normal rescaling clamped/edgeテクスチャ・サンプリング イメージ・プロセッシング 対応カード Rage 128 Rage 128 GL Rage XL/XC, Rage 128 Pro Rage Fury MAXX それ以降のカード 拡張 Extension Extension ID Functions 3D Volume Textures GL_EXT_texture3D glTexImage3DEXT BGRA Texture Format GL_EXT_bgra BGR_EXT, BGRA_EXT (in glTexImage2D) Packed Pixels GL_EXT_packed_pixels Normal Rescaling GL_EXT_rescale_normal Separate Specular Color GL_EXT_separate_specular_color Texture Coord Edge Clamping SGIS_texture_edge_clamp Texture LOD Control SGIS_texture_lod Draw Range Elements EXT_draw_range_elements glDrawRangeElements Image Processing Subset EXT_color_table, EXT_convolution, SGI_color_matrix, EXT_histogram, EXT_blend_color, EXT_blend_minmax OpenGL 1.2.1 1998年10月リリース multi-texture texture unit rendering pipeline 対応カード Radeon Radeon Mobility Radeon 7500 Mobility Radeon 8500 Radeon 9000 Radeon 9200 Radeon 9600 Radeon 9800 GeForce 3 GeForce 4Ti GeForce FX それ以降のカード 拡張 Extension Extension ID Functions マルチ・テクスチャリング SGIS_multitexture glActiveTextureARB, glClientActiveTextureARB OpenGL 1.3 2001年8月リリース cubemap texture multi-texturing multi-sampling texture unit combine opeerations(add, combine, dot3, border clamp) 対応カード Radeon 32/36 Radeon 64/7200 Radeon 7000 Radeon 7500 Radeon IGP 320M Radeon IGP 345M ES1000 Radeon 8500 Radeon 9000/Pro Radeon 9100/9200/9250 (Pro IGP) GeForce 3 GeForce 4Ti GeForce FX それ以降のカード 拡張 Extension Extension ID Functions Compressed Textures GL_ARB_texture_compression Cubemaps GL_EXT_texture_cube_map TEXTURE_CUBE_MAP_EXT Multi-Sampling GL_ARB_multisample Texture Add GL_ARB_texture_env_add Texture Combine GL_ARB_texture_env_combine Texture Dot3 GL_ARB_texture_env_dot3 Texture Border Clamping GL_ARB_texture_border_clamp Matrix Transpose GL_ARB_transpose_matrix OpenGL 1.4 2002年6月リリース hardware shadowing fog coordinates automatic mipmap generation additional texture mode 対応カード Quadro DCC Quadro4 380 XGL Quadro4 500XGL, 5500XGL Quadro4 700XGL, 750XGL Quadro4 900XGL, 980XGL それ以降のカード GMA 900 (910GL, 915GL, 915GV, 915G) GMA 950 (945GZ, 945GC, 945G, Mobile 945 Family) GMA 3000 (946GZ, Q963, Q965) 拡張 Extension Extension ID Functions Automatic Mipmaps SGIS_generate_mipmap Blend Squaring Functions GL_NV_blend_square Depth Textures GL_ARB_depth_texture DEPTH_COMPONENT16/24/32_ARB Hardware Shadowing Z-depth GL_ARB_shadow COMPARE_R_TO_TEXTURE Fog Coordinates GL_EXT_fog_coord Multiple Draw Arrays GL_EXT_multi_draw_arrays Point Parameters GL_ARB_point_parameter Secondary Color GL_EXT_secondary_color Separate Blend Functions GL_EXT_blend_func_separate Stencil Wrapping GL_EXT_stencil_wrap Texture Crossbar Environment Mode GL_ARB_texture_env_crossbar Texture LOD Bias GL_EXT_texture_lod_bias Texture Mirrored Repeat GL_ARB_texture_mirrored_repeat Window Raster Position GL_ARB_window_pos OpenGL 1.5 2003年6月リリース vertex buffer objects(VBO) occlusion queries extended shadowing function 対応カード Radeon X800 Radeon 9600 Radeon 9700 Radeon 9800 GeForce FX それ以降のカード GMA 3100 (Q33, Q35, G31, G33) GMA 3150 (Atom Dx10, N4x0) GMA X3100 (GL960, GLE960, GM965, GME965) 拡張 Extension Extension ID Functions VBOs Vertex Buffer Objects GL_ARB_vertex_buffer_object glBindBufferARB, glBufferDataARB, glGenBuffersARB Occlusion Queries GL_ARB_occlusion_query Extended Shadow Functions GL_EXT_shadow_funcs OpenGL 2.0 2004年9月リリース ARB呼び出しGPUベースassembly language ユーザ・プログラマブル・シェーダ バーテックス・シェーダ フラグメント・シェーダ 対応カード Radeon 9650 Radeon 9500 Radeon 9500/9550/9600/9700/9800 (Pro, SE, XT) Radeon X1050 Radeon Xpress 200/1100 Radeon X300 Radeon X550 Radeon X600/Pro Radeon X700 Radeon X800(VE, SE, GT, Pro) Radeon X850 Radeon Xpress 1250 Radeon X1200 Radeon X1250 Radeon 2100 Radeon X1300 Radeon X1550 Radeon X1600 Radeon X1650 Radeon X1800 Radeon X1900 Radeon X1950 (Pro, XT, GT) GeForce 6800 Quadro 600 Quadro FX 500 Quadro FX 700 Quadro FX 1000 Quadro FX 2000 Quadro FX 3000 Quadro FX 1400 Quadro FX 1500 Quadro FX 3450 Quadro FX 3500 Quadro FX 4500X2 Quadro FX 4500 SDI それ以降のカード GMA 500 (UL11L, US15L, US15W) GMA X3000 (G965) GMA X3500 (G35) 拡張 Extension Extension ID Functions Shader Objects GL_ARB_shader_objects Vertex Programs GL_ARB_vertex_program glBindProgramARB, glGenProgramsARB Vertex Shaders (VS) GL_ARB_vertex_shader Fragment Shaders (FS) GL_ARB_fragment_shader Multiple Render Targets GL_ARB_draw_buffers glDrawBuffers Rectangular Texture GL_ARB_texture_rectangle GL_TEXTURE_RECTANGLE_ARB Point Sprites GL_ARB_point_sprite Separate Blend Equation GL_EXT_blend_equation_separate Separate Stencil GL_EXT_stencil_two_side OpenGL 2.1 2006年6月リリース pixel buffer objects(PBO) sRGBテクスチャ(gamma-corrected textures) non-square matrices Shading Language GLSL 1.20 対応カード Radeon GD 2350 GeForce FX (with driver 175.19) GeForce 6000シリーズ Geforce 7000シリーズ GeForce Go 7000シリーズ Quadro FX 4000 Quadro FX 350 Quadro FX 550 Quadro FX 560 Quadro FX 1400 Quadro FX 1500 Quadro FX 5500 それ以降のカード GMA 4500 (B43, Q43, Q45) GMA X4500 (G41, G43) GMA X4500HD (G45) GMA 4500MHD (GL40, GS40, GM45, GS45) GMA Graphics GMA HD (Clarkdale GMCH Die Ironlake, Arrandale GMCH Die Ironlake) 拡張 Extension Extension ID Functions Non-Square Matricies glUniformMatrix{}fv PBOs Pixel Buffer Objects GL_ARB_pixel_buffer_object sRGB Texture (gamma 2.2) GL_EXT_texture_sRGB OpenGL 3.0 2008年6月リリース OpenGL Shading Language 1.30 (GLSL) Vertex Array Objects More flexible Framebuffer Objects 32-bit(single precision) floating-point textures and render buffers 16-bit(half precision) floating-point vertex and pixel data Ability to render vertex transformations into a buffer Texture arrays 32-bit(single precision) float point depth buffer support 対応カード Radeon HDシリーズ GeForce 8000, 9000 GTX 100 GTX 200 GTX 300シリーズ 拡張 Extension Extension ID Functions Geometry Shader (GS) GL_EXT_geometry_shader4 GEOMETRY_SHADER_EXT FBOs Frame Buffer Objects GL_EXT_framebuffer_object glFrameBufferTexture2DEXT FBO Multisampling GL_EXT_framebuffer_multisample Hardware Instancing GL_EXT_draw_instanced glDrawArraysInstancedEXT, glDrawElementsInstancedEXT VAOs Vertex Array Objects GL_ARB_vertex_array_object glBindVertexArray, glGenVertexArray sRGB Framebuffers (gamma 2.2 GL_EXT_framebuffer_sRGB FRAMEBUFFER_SRGB_EXT OpenGL 3.1 2009年5月 OpenGL Shading Language 1.40(GLSL) Texture Buffer Objects Uniform Buffer Object Signed normalized textures (+-1.0 range) A minimum of 16 texture units accessible by the vertex shader Primitive restart Instancing CopyGBuffer API 対応カード OpenGL 3.2 2009年8月 OpenGL Shading Language 1.50(GLSL) ジオメトリ・シェーダ BGRA vertex component ordering Shader Fragment coordinate convention control Seamless cube map filtering Fragment depth clamping Multisampled textures and texture samples for specific sample locations Sync and Fence objects 対応カード Radeon HD シリーズ GeForce 8000, 9000 GTX 100 GTX 200 GTX 300シリーズ OpenGL 3.3 OpenGL Shading Language 3.3(GLSL)このバージョンからOpenGLとGLSLのバージョンを合わせてきた OpenGL 4.0 OpenGL Shading Language 4.0(GLSL) DirextX11相当 OpenGL 4.1 OpenGL Shading Language 4.1(GLSL) 参考 http //en.wikipedia.org/wiki/OpenGL http //en.wikipedia.org/wiki/Intel_GMA