【问题标题】:Is it possible to use OpenGL in a window that is already using GDI+?是否可以在已经使用 GDI+ 的窗口中使用 OpenGL?
【发布时间】:2010-10-27 03:43:56
【问题描述】:

基本上,我被要求渲染到已设置(我不确定如何)使用 GDI+ 的屏幕外 DC。当我尝试将 OpenGL 上下文与 DC 关联时,它只是失败了(即返回零但没有错误)。 SetPixelFormat 也失败了(可能是因为它已经设置好了?),再次返回零,而不是错误。

任何人都知道是否有可能,在这种情况下(即其他人正在使用 GDI+ 的窗口的屏幕外上下文),创建 OpenGL 上下文并使用 OpenGL 进行我自己的渲染? (如果可能,为什么 wglCreateContext 会失败?)

【问题讨论】:

    标签: windows opengl drawing gdi openglcontext


    【解决方案1】:

    本文向您展示了连接 GDI 窗口的所有步骤:http://nehe.gamedev.net/data/lessons/lesson.asp?lesson=01

    基本上,您必须:

    1. 创建一个窗口
    2. 注册窗口
    3. 获取窗口绘图区的设备上下文
    4. 为设备上下文设置像素格式
    5. 调用 wglCreateContext
    6. 调用 wglMakeCurrent
    7. 显示窗口

    如果您已经可以访问设备上下文,请跳过前两个步骤。

    在你的情况下,你可能会看到 wglMakeCurrent 是否是你所需要的。否则,您可能需要发布有关您遇到的错误和行为的更多详细信息。

    【讨论】:

    • 问题是我已经有了 DC(它是一个屏幕外设备上下文),指的是我需要绘制的窗口,但是我的 wglCreateContext 失败并且没有任何错误消息,我的也是设置像素格式。我可以毫无问题地创建新的 OpenGL 窗口,但它试图使用应用程序给我的 DC,这就是问题所在......
    • 你怎么知道它失败了?你得到什么样的错误或代码作为回报?有什么奇怪的行为,或者它只是没有画吗?
    • 无错误代码,来自 OpenGL 或 Windows 系统。不过,我知道它不起作用,因为它返回 0 而不是有效的 HGLRC。
    猜你喜欢
    • 1970-01-01
    • 2013-05-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多