めいくりぷとのブログ

技術的なことやゲームのことやら・・・

Wrapper opengl32.dll

// opengl32.dll export function
namespace opengl32
{
	pfnglAlphaFunc	_glAlphaFunc;
	pfnglBegin	_glBegin;
	pfnglBitmap	_glBitmap;
	pfnglBlendFunc	_glBlendFunc;
	pfnglClear	_glClear;
        ....
        ....
}

namespace opengl32
{
	typedef void (WINAPI * pfnglAlphaFunc)(GLenum func, GLclampf ref);
	typedef void (WINAPI * pfnglBegin)(GLenum mode);
	typedef void (WINAPI * pfnglBitmap)(GLsizei width, GLsizei height, GLfloat xorig, GLfloat yorig, GLfloat xmove, GLfloat ymove, const GLubyte *bitmap);
	typedef void (WINAPI * pfnglBlendFunc)(GLenum sfactor, GLenum dfactor);
	typedef void (WINAPI * pfnglClear)(GLbitfield mask);
        ....
        ....
}

かなり面倒ですが、opengl32.dll のエクスポート関数(360個)を自動生成なりで書いていきます。
自分は自動生成という概念すら思い浮かばなかったので、1つ1つ書いていきましたが...


そして、必要な関数だけ、opengl32.dllのそれに対応したエクスポート関数のポインタを渡します。
で、フックしたい関数を __declspec(dllexport) を使ってやればオーケー


以上