拦截Opengl在其他窗口中调用并重播它们

时间:2013-12-26 09:42:41

标签: c++ opengl graphics

我写了我的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创建的窗口上。 但它不起作用。每个(应用程序和创建的窗口)都不显示任何内容。 我不知道如何修改它?

0 个答案:

没有答案