SDL で GLSL

とりあえず imagire さんの

http://imagire.zive.net/t-pot/program/104_GLSL/

を元に、SDL で glsl を使ってみましょう。とりあえず、SDL についている gl のサンプルをベースにしました。
いろいろいじってみたところ、

#include "SDL_opengl.h"

とすると、いろいろ拡張を導入してくれるようです。ただ、これだとうまく行きませんでした。結局 glew ( http://glew.sourceforge.net/ )という gl 拡張を簡単に使うためのライブラリを持ってくることにしました。まずは、

#include "gl/glew.h"
#pragma comment( lib, "glew32.lib" )

で、glew を持ってきます。次に、

#define NO_SDL_GLEXT
#include "SDL_opengl.h"

とし、SDL_opengl.h の拡張定義を切ります。

後は、glew の初期化と imagire さんのサンプルを切ったり張ったりしたのが、

http://cvs.sourceforge.jp/cgi-bin/viewcvs.cgi/gslib/GSLib/SandBox/SDL/sdl.cpp

です。SDL のサンプルに追加したコードは、全てインデント0で「適当」に貼り付けています。単に glsl が利用できていることのみを調べるため、頂点シェーダーは、

void main(void)
{
    gl_Position = ftransform();
}

のみ、フラグメントシェーダーは、

void main(void)
{
    gl_FragColor = vec4( 0, 1, 0, 0 );
}

のみとしました。ですので、添付画像のように、単に緑色の立方体が回っているだけです。