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

2 投票
1 回答
1485 浏览
提问于 2025-04-16 20:33

我正在写一个应用程序,想在Windows 7的桌面上用OpenGL画一些基本的多边形和椭圆。根据之前的一个问题,这可以通过获取桌面的窗口句柄来实现,我知道怎么做。

不过,我有两个问题:

  1. 我到底在哪里告诉OpenGL要画到哪个窗口上呢?我看了nehe的示例1,但就是搞不清楚它是在哪里把窗口句柄传给OpenGL的。我是要给OpenGL一个窗口句柄,还是一个设备上下文呢?

  2. 使用PyOpenGL或Pyglet可以做到这一点吗?还是我必须用C语言写,然后再用ctypes把代码封装起来?

1 个回答

2

在另一个进程的窗口上使用OpenGL真的是个非常糟糕的主意! OpenGL要正常工作,需要设置窗口的像素格式。但是,一个窗口的像素格式只能设置一次,所以在别人的窗口上做这件事简直就是自找麻烦。

正确的做法是使用PBuffer,虽然这个方法很慢。PBuffer有自己的离屏设备上下文(HDC),你可以先在这个PBuffer上进行渲染,然后再把内容从PBuffer复制到目标窗口。不过我自己从来没有实现过这个,所以不能告诉你这个方法到底效果如何。但听起来是个有趣的尝试,也许下次我启动Windows的时候会试试。

撰写回答