python - 如何使用 PyOpengl 或 pyglet 在桌面上绘制?

标签 python windows opengl pyglet pyopengl

我正在编写一个应用程序,希望使用 OpenGL 在 Windows 7 桌面上绘制基本的多边形和椭圆形。根据 this previous question,这可能是通过将窗口句柄获取到桌面,我知道该怎么做。 Draw OpenGL on the windows desktop without a window

但是,我有两个问题:

  1. 您实际上在哪里告诉 OpenGL 要绘制到哪个窗口?我一直在查看 nehe 示例 1,但我根本无法弄清楚它究竟在哪里将 hwnd 传递给 openGL。我是给 openGL 一个窗口句柄还是一个设备上下文?

  2. 是否可以使用 PyOpenGL 或 Pyglet 来做到这一点?还是我必须用 C 语言编写,然后将代码包装在 ctypes 中?

最佳答案

尝试在另一个进程的窗口上执行 OpenGL 是一个非常非常糟糕的主意!要让 OpenGL 工作,它需要设置窗口的像素格式。然而,窗口的像素格式只能设置一次,因此在外部窗口上执行此操作将导致灾难。

正确的方法是使用 PBuffer,它有自己的屏幕外 HDC,但它的速度很慢,渲染到这个 PBuffer 和 BitBlt 从 PBuffer 到目标窗口。不过我自己从来没有实现过这个,所以我不能直接告诉你它的效果如何。但这听起来是一件有趣的尝试,所以也许我下次在我的机器上启动 Windows 时会这样做。

关于python - 如何使用 PyOpengl 或 pyglet 在桌面上绘制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6526627/

相关文章:

java - 纹理贴图和光照顶点着色器 ErrorJava OpenGL

python - 在 Python 中使用正则表达式对列表进行排序

python - 使用高分辨率图像保存绘图

windows - 奇怪的错误,我无法在 Windows 上构建 OCaml 程序

java - 使用 eclipse for windows 在 java 中进行套接字流传输

java - Eclipse 中的 JOGL OpenGL 抛出 NoSuchMethodError

python - 引用过滤数据框的列的可扩展方式

python - 将某些内容添加到字符串后,如何打印修改以及字符串的其余部分?

windows - Composer 脚本部分 os.dependent

opengl - VNC 终端中的 vtkXOpenGLRenderWindow 错误