GPUプログラミングの方法

  • OpenGL
  • CUDA, GLSL, Cg :シェーディング言語
  • GPUCV, GPUKLT :GPU上で走るライブラリ (GPUCVはOpenCVをGPU上で走らせるライブラリ)
  • さて,どれから手をつけるか・・・
  • 下記にGLSL+GLUT+GLEWの組み合わせを記す.

OpenGL+GLUT+GLEWのインストール方法(Win32において)

  • ネット上でやってるインストールとはディレクトリ構造が違うので注意
  • OpenCVと同様,Program Files以下にまとめ,ただしDLLだけはsystem32に置いた
  • ネット上と同様,全部.NETに入れちゃえば追加ディレクトリの設定も要らない
  • 要検討

OpenGLのインストール

  • 基本的に最近のWindowsには opengl32.dll が Windows\system32以下に置かれている=インストール済みなので不要

GLUTのインストール

  • http://www.rimath.saitama-u.ac.jp/lab.jp/tsakurai/opengl/index.html 参考
  • (VCInstallDir)は
    • Visual Studio 6.0の場合 C:\Program Files\Microsoft Visual Studio\VC98
    • Visual Studio .NET 2003の場合 C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK
    • Visual Studio 2005の場合 C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK
  1. http://www.xmission.com/~nate/glut.html から glut-3.7.6-bin.zip をダウンロード(2008/01/21現在)
  2. 展開してできた
    • glut.h を (VCInstallDir)\Include\GL に
    • glut32.lib を (VCInstallDir)\Lib に
    • glut32.dll を C:\WINDOWS\system32 に
    • それぞれ置く
    • dllファイル以外の置き場所は任意
  3. glut.hをインクルード

GLEWのインストール

  1. http://glew.sourceforge.net/ から glew-1.5.0-win32.zipをダウンロード(2008/01/21現在)
  2. 展開してできた
    • include\GL\glew.h と include\GL\wglew.h を (VCInstallDir)\Include\GL に
    • lib\glew32.lib と lib\glew32s.lib を (VCInstallDir)\lib に
    • bin\glew32.dll を C:\WINDOWS\system32 に
    • それぞれ置く
    • dllファイル以外の置き場所は任意
  3. glew.hはglut.hより前にインクルードしないといけない模様.
  4. glew32.lib を使用するライブラリ一覧に追加

OpenGL+GLUT+GLEW+GLEXTのインストール方法(Ubuntuにおいて)

  • UbuntuではGLEXTライブラリも追加した

GLUTのインストール

  • パッケージ管理でインストール
    sudo apt-get install -y freeglut3-dev libglut3-dev

GLEWのインストール

  • パッケージ管理でインストール
    sudo apt-get install -y libglew1.5-dev

GLEXTのインストール

  • パッケージ管理でインストール
    sudo apt-get install -y libgtkglext1-dev
    ジャンル:OpenGL

error C2086: 'int APIENTRY' : 再定義されました。

  • Windows+OpenGLの環境で起きる模様
  • gl.hをインクルードする前にwindows.hをインクルードすれば直る?
    #include <windows.h>
    #include <GL/gl.h>
  • ただ,インクルードの順番にもよるみたい…
  • GLEW+GLUT+OpenGLの組み合わせの場合,OpenGLとOpenCVの共存を参照して順序を正すべし

GLUT系

glutInit(int *argc, char **argc);

  • GLUTの初期化をする

glutInitDisplayMode(GLUT_RGB|GLUT_DOUBLE); // GLUT_RGB: use RGB

  • GLUTの初期化をする
  • GLUT_RGBA:RGBA モードを選択するビットマスク.GLUT_RGBAも GLUT_INDEX も記述されないときのデフォルトである.
  • GLUT_RGB:GLUT_RGBA へのエイリアス.
  • GLUT_RGB:RGB空間を使う
  • GLUT_DOUBLE:2枚のスクリーンを使う.倍精度のdoubleではない
  • GLUT_INDEX:カラーインデックス・モードを選択するビットマスク. GLUT_RGBAも記述された場合,上書きする.
  • GLUT_SINGLE:シングルバッファ・モードを選択するビットマスク. GLUT_DOUBLE もGLUT_SINGLEも記述されていない場合の デフォルトである.
  • GLUT_DOUBLE:ダブルバッファ・モードを選択するビットマスク. GLUT_SINGLE も記述されていた場合,上書きする.
  • GLUT_ACCUM:アキュムレーション・バッファを選択するビットマスク.
  • GLUT_ALPHA:カラーバッファにアルファ成分を加えることを選択するビットマスク.
  • GLUT_DEPTH:デプス(Z)バッファを加えることを選択するビットマスク.
  • GLUT_STENCIL:ステンシル・バッファを加えることを選択するビットマスク.
  • GLUT_MULTISAMPLE:マルチサンプリングのサポートを選択するビットマスク. マルチサンプリングが利用できない場合は無視される.
    • 注意:マルチサンプリングを可能とするためには,OpenGL の クライアントとサーバーの両方が GLX_SAMPLE_SGIS エクステンションをサポートしていなければならない.
  • GLUT_STEREO:ステレオ・ウィンドウを選択するビットマスク.
  • GLUT_LUMINANCE:``luminance'' カラーモデルを選択するビットマスク. このモデルは OpenGL の RGBA カラーモデルの機能を提供するが, G,B成分はフレームバッファに反映されない.その代わり,各ピクセルの R成分がゼロとglutGet(GLUT_WINDOW_COLORMAP_SIZE)-1 の間の値に 変換され,ウィンドウごとのカラーマップを参照してそのウィンドウ内の ピクセル色を決定する.GLUT_LUMINANCE ウィンドウの 初期カラーマップは線型なグレーであるが,GLUT のカラーマップ・ ルーチンによって変更可能である.

glutInitWindowPosition(int x, int y)

  • ウィンドウの位置を設定する

glutInitWindowSize(int width, int height);

glutCreateWindow()

  • glutでウィンドウを生成する
  • 失敗するとGL_FALSEを返す

glutPostRedisplay();

  • ask to draw the display

glutReshapeFunc();

glutDisplayFunc();

glutIdleFunc();

glutKeyboardFunc();

glutSpecialFunc();

GLEW系

glewInit();

  • GLEWの初期化をする

OpenGL

glCreateShaderObjectARB(GL_VERTEX_SHADER_ARB);

  • SHADERを使うことを宣言する

glCreateProgramObjectARB();

  • プログラムオブジェクトを生成する

GLhandleARB glCreateShaderObjectARB();

  • シェーダープログラムオブジェクトを生成する
  • GL_VERTEX_SHADER_ARB:バーテックスシェーディングプログラム
  • GL_FRAGMENT_SHADER_ARB:フラグメントシェーディングプログラム

glAttachObjectARB();

glLinkProgramARB();

glGetObjectParameterivARB();

  • log情報を出力する

glActiveTexture(GL_TEXTURE0);

glBindTexture(GL_TEXTURE_2D, inputImageTextureId);

glCompileShaderARB();

  • compile the shader

glPixelStorei

glDisable

GLSL参考サイト

ジャンル:OpenGL


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2013-12-27 (金) 12:42:55 (1816d)