Python 如何使用PyOpengl或pyglet在桌面上绘图?

Python 如何使用PyOpengl或pyglet在桌面上绘图?,python,windows,opengl,pyglet,pyopengl,Python,Windows,Opengl,Pyglet,Pyopengl,我正在编写一个应用程序,希望使用OpenGL在Windows7桌面上绘制基本多边形和椭圆。根据前面的问题,这可能是通过将窗口句柄放到桌面上,我知道如何做。 然而,我有两个问题: 你到底在哪里告诉OpenGL绘制哪个窗口?我一直在浏览nehe示例1,但我根本不知道它到底在哪里传递openGL的hwnd。我是给openGL一个窗口句柄还是一个设备上下文 是否可以使用PyOpenGL或Pyglet实现这一点?或者我必须用C编写它,然后用ctypes包装代码 试图在另一个进程窗口上使用OpenGL是一

我正在编写一个应用程序,希望使用OpenGL在Windows7桌面上绘制基本多边形和椭圆。根据前面的问题,这可能是通过将窗口句柄放到桌面上,我知道如何做。

然而,我有两个问题:

  • 你到底在哪里告诉OpenGL绘制哪个窗口?我一直在浏览nehe示例1,但我根本不知道它到底在哪里传递openGL的hwnd。我是给openGL一个窗口句柄还是一个设备上下文

  • 是否可以使用PyOpenGL或Pyglet实现这一点?或者我必须用C编写它,然后用ctypes包装代码


  • 试图在另一个进程窗口上使用OpenGL是一个非常非常糟糕的主意要使OpenGL正常工作,需要设置窗口的像素格式。但是,窗口的像素格式只能设置一次,因此在外部窗口上这样做会导致灾难


    正确的方法是使用PBuffer,它有自己的屏幕外HDC,从PBuffer到目标窗口渲染到这个PBuffer和BitBlt。但是我自己从来没有实现过,所以我无法直接告诉你这有多好。但这听起来是一件很有趣的事情,所以下次在我的机器上启动Windows时,我可能会这么做。

    谢谢!当我想起来的时候,这是真的。仔细想想,这根本不能满足我的要求,我想要的是一个始终位于顶部且背景透明的窗口。@jmite:那么你应该读一读-分层窗口也不能与OpenGL一起使用,所以技巧是再次使用PBuffer和BitBlt进行渲染。