我写了我的openg32.dll来替换原点。在DLL中我创建了一个窗口来重放opengl调用。
我的代码:
void WINAPI sys_wglSwapBuffers(HDC hdc)
{
HDC l_oldDC = sys_wglGetCurrentDC();
HGLRC l_oldRC = sys_wglGetCurrentContext();
(*orig_wglSwapBuffers)(hdc);
//hDC is the dc of the window created by me
sys_wglMakeCurrent(hDC, l_oldRC);
(*orig_wglSwapBuffers)(hDC);
sys_wglMakeCurrent(l_oldDC, l_oldRC);
}
其他opengl函数如:
void WINAPI sys_glVertex3f (GLfloat x, GLfloat y, GLfloat z)
{
HDC l_oldDC = sys_wglGetCurrentDC();
HGLRC l_oldRC = sys_wglGetCurrentContext();
// default call
(*orig_glVertex3f) (x, y, z);
sys_wglMakeCurrent(hDC, l_oldRC);
(*orig_glVertex3f) (x, y, z);
sys_wglMakeCurrent(l_oldDC, l_oldRC);
}
我想复制opengl调用并显示在由dll创建的窗口上。 但它不起作用。每个(应用程序和创建的窗口)都不显示任何内容。 我不知道如何修改它?