Fork me on GitHub

Other articles


  1. OpenGL Vertex Array Object (VAO)

    VAOとglVertexPointer等を組み合わせてもいいのか

    OpenGLのVBOを使ってると、

    glBindBuffer(...);
    glVertexPointer(...);
    glBindBuffer(...);
    glNormalPointer(...);
    glBindBuffer(...);
    glColorPointer(...);
    

    のようなコードが描画のたびに現れます。 最近はglAttribPointerが主流みたいですが、まだ上のようなコードもあると思います。 VAOを使えばこういうコードをまとめることができてスッキリ、便利、効率的らしいですが、VAOのサンプルはglAttribPointerを使ってるものが多い。しかし、なんとなくglAttribPointerに書き換えたくないけど、VAOは使いたいという状況。

    やってみたら動きました。

    使い方

    VAOを作る:

    GLuint vao;
    glGenVertexArrays(1, &vao);
    glBindVertexArray(vao);
    glBindBuffer(...);
    glVertexPointer(...);
    glBindBuffer(...);
    glNormalPointer(...);
    glBindBuffer(...);
    glColorPointer(...);
    glBindVertexArray(0);
    

    VAOを使って描画:

    glBindVertexArray(vao);
    glDrawArrays(...);
    
    read more
  2. freeglutの便利機能

    freeglutの便利機能

    OpenGLをちょこちょこ試すだけならいまだにGLUTは便利。 Windowsの場合、なんとなくfreeglutを使っています。 freeglutにはオリジナルのGLUTにはない便利な拡張機能が用意されているので、最近使ったのをメモ。

    freeglut拡張機能を使うにはヘッダも追加でインクルード。

    #include "gl/freeglut_ext.h"
    

    次の関数呼ぶだけで全画面とウィンドウモードを一瞬で切り替えられる。便利。

    glutFullScreenToggle();
    

    マルチタッチのコールバック関数も登録できる。便利。

    glutMultiEntryFunc(multiEntry);
    glutMultiButtonFunc(multiButton);
    glutMultiMotionFunc(multiMotion);
    

    それぞれのコールバック関数はこんな感じのを用意する。便利。

    void multiEntry(int id, int enterOrLeft)
    void multiButton(int id, int x, int y, int, int downOrUp)
    void multiMotion(int id, int x, int y)
    
    • idはタッチ番号 ...
    read more
  3. MFCでマルチタッチ

    Windows8搭載ノートPCがタッチ対応当たり前になりつつありますので、貴方の会社の社長が突然、「うちのソフトもマルチタッチに対応しろや!」と言い出すかもしれません。 「MFC使ってるのでそんなこと急にできません」なんて言い訳はできないでしょう。

    そんな状況を想定して、MFCでマルチタッチに対応できないか調べてみました。

    ジェスチャーに対応するだけならとても簡単。 下記の関数から使いたいジェスチャーに対応する関数をViewに実装するだけです。

    virtual BOOL OnGestureZoom(CPoint ptCenter, long lDelta);
    virtual BOOL OnGesturePan(CPoint ptFrom, CPoint ptTo);
    virtual BOOL OnGestureRotate(CPoint ptCenter, double dblAngle);
    virtual BOOL OnGesturePressAndTap(CPoint ptFirstFinger, long lDelta);
    virtual BOOL OnGestureTwoFingerTap(CPoint ptCenter);
    

    詳しくは次のページに全部載ってます。

    http://technet.microsoft.com/ja-jp/subscriptions ...

    read more

Page 1 / 2 »

blogroll

social