EXTの使い方とGLで減算
減算が指定したいだけなのに相変わらずGLのEXTの取得の仕方がよくわからん。
/ ̄ ̄\ / _ノ \ | ( ●)(●) <おっとGLの悪口はそこまでだ・・・ . | (__人__)____ t-potの所にあったGLのサンプルのを見てやっとわかるとかどういう | ` ⌒/ ─' 'ー\ . | /( ○) (○)\ . ヽ / ⌒(n_人__)⌒ \ ヽ |、 ( ヨ | / `ー─− 厂 / | 、 _ __,,/ \
typedef void (APIENTRY * PFNGLBLENDEQUATIONEXT)(GLenum op); static PFNGLBLENDEQUATIONEXT glBlendEquationEXT = NULL; // 指定の機能が使えるか調べる BOOL IsExtensionSupported(const char *search) { const GLubyte *extensions = glGetString(GL_EXTENSIONS); const char *find = strstr( (const char *)extensions, search ); if ( find ) return TRUE; return FALSE; } void Init() { glBlendEquationEXT = NULL; // 減算 のサポートを確認する if( IsExtensionSupported( "GL_EXT_blend_subtract" ) ) { // GL 関数のポインタを所得する glBlendEquationEXT = (PFNGLBLENDEQUATIONEXT) wglGetProcAddress("glBlendEquationEXT"); } }
気をつけたいのは関数がサポートされてるかということを調べるのではなくて
必要としている機能が動作するかを調べなければいけないというぐらい?
この場合減算が使えるかどうかが重要なので関数名に近い名前のGL_EXT_blend_equation_separateを指定しても意味がないらしい。
関数ポインタの型がアンダースコア無しの全部大文字とかみずれぇぜ。
Extensionヘッダがどこにあんのかわかんないしめんどくさいので必要な奴だけ直定義だぜ!
#define GL_FUNC_ADD 0x8006 #define GL_FUNC_SUBTRACT 0x800A #define GL_FUNC_REVERSE_SUBTRACT 0x800B
よい子は真似しないように。
なんか減算周りはGL2.0で普通に使えるようになっているという噂だけどSDLとどうやって組み合わせて使うのかよくわかりません。Openという名の悪魔。
ちなみに普通EXTを使う時はGLEWとかいうのを使うのが一般的らしい。
http://glew.sourceforge.net/
EXTを2〜3個使うくらいだったらわざわざGLEWを使う必要もないと思う。
20行ぐらいで書けるしそんなあちこちで使う物でもないし。