【问题标题】:How to use GDI functions to draw on a DC which is being used by OpenGL?如何使用 GDI 函数在 OpenGL 使用的 DC 上绘图?
【发布时间】:2011-11-10 00:23:21
【问题描述】:

如何使用 GDI 函数在 OpenGL 使用的设备上下文 (DC) 上绘制?

这意味着如何同时使用 GDI 函数和 OpenGL。假设我有一个 DC,并且这个 DC 已经用于初始化 OpenGL。

【问题讨论】:

    标签: windows winapi opengl graphics gdi


    【解决方案1】:

    你最好不要这样做。从技术上讲,混合 OpenGL 和 GDI 仅适用于单个缓冲窗口。对于双缓冲窗口,GDI 调用仅在缓冲区交换后才有意义。

    但你到底为什么要混合使用 OpenGL 和 GDI?

    【讨论】:

    • 因为我想使用 GDI 的一些 2D 功能,例如绘制文本(矢量字体)等,这样做是好事吗?
    • @Paul:我猜你想画文字。在 OpenGL 中绘制文本有几种方法。最常见的是纹理映射字体,即它变成纹理图集的字体,然后是从中绘制的文本。缺点:它不适用于具有大量字符的语言。另一种方法是将文本渲染为图像(您可以使用 GDI 将其转换为 DIBSECTION DC),然后将该图像上传到 OpenGL。其他可能的方法包括矢量纹理和距离图。
    • tks daten,矢量纹理是一个不错的选择 :) 但是我必须自己阅读矢量字体文件,然后使用 GL_LINES 绘制每个字符?
    • @Paul:矢量纹理对纹理中的字形形状曲线系数进行编码,并使用着色器实现 Beizer 光栅化。从技术上讲,您将绘制四边形,其中包含一组选择字形曲线的顶点属性。不过我建议你不要自己实现字体渲染,而是使用一个可用的、随时可用的 OpenGL 字体渲染库。
    • 你建议用什么 c++ 库在 opengl 中渲染 3D 矢量文本?
    猜你喜欢
    • 1970-01-01
    • 2019-08-05
    • 1970-01-01
    • 2019-02-01
    • 1970-01-01
    • 2015-12-24
    • 2015-12-29
    • 2010-09-16
    • 1970-01-01
    相关资源
    最近更新 更多