約 3,364,400 件
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/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/slab/pages/14.html
開発環境の構築(Windows) 下記サイトを参照。 VisualC++ を使った OpenGL 入門【0.1日目】OpenGL と Visual C++ 2008 Express Edition の準備 まずはVisual Studio 2010をインストールする。(Visual C++ 2010 Express EditionでもOK。Visual C++ 2010 Express Editionは無料。) GLUTのダウンロードサイトの一番上にある「glut-3.7.6-bin.zip (117 KB)」をダウンロードする。 Windows7でVisual Studio 2010を使って開発する場合は、解凍したzipに入っている3つのファイルを以下のように配置する。 ファイル名 設置場所 glut32.dll C \Windows\SysWOW64 glut32.lib C \Program Files (x86)\Microsoft Visual Studio 10.0\VC\lib glut.h C \Program Files (x86)\Microsoft Visual Studio 10.0\VC\include Visual Studio 2010でプロジェクトを作成する際に、プロジェクトの種類を「CLR」にして開発をする。
https://w.atwiki.jp/mypad/pages/23.html
openFrameworksを使っているとopenGLの知識が必要になってくる ofxARToolkitPlusという拡張現実の描画をしているのもOPENGL。 どうも座標があわないなと思っていたら ただし、OpenGLでは、座標の原点(0,0)は左下です。 とのこと。y座標が上下逆で、デカルト座標系なんですね。 http //sky.geocities.jp/freakish_osprey/opengl/opengl_viewport.htm
https://w.atwiki.jp/gametips/pages/24.html
///**********************************************//** /// OpenGL プログラムから受け取った /// 頂点位置と頂点色をそのままフラグメントシェーダに出力します。 ///**********************************************//** #version 400 in vec3 vertex_position; // OpenGL プログラムからの頂点位置の入力 in vec3 vertex_color; // OpenGL プログラムからの頂点色の入力 out vec3 color; // フラグメントシェーダへの頂点色の出力 void main() { color = vertex_color; gl_Position = vec4( vertex_position, 1.0 ); }
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/sabupot/pages/16.html
OpenGLに関するリンク集です。 GLUTによる「手抜き」OpenGL入門 ↑情報量が多いです。OpenGLのインストール方法も詳しく書いてあります。 OpenGL Programin ↑よく見てないので分かりません。
https://w.atwiki.jp/shiitakeo/pages/25.html
@Mac ヘッダファイルのインクルード Winでは #include GL/glut.h だけど,Macだと #include GLUT/glut.h にする. コンパイルするとき. frameworkを指定してやる.GLUT使うならそれも. $gcc -framework OpenGL -framework GLUT prg.c *
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