【问题标题】:How to create solid extrusion of bitmap with OpenGL?如何使用 OpenGL 创建位图的立体挤压?
【发布时间】:2011-09-10 07:16:55
【问题描述】:

我有一个位图图像(RGB,无 alpha),如下图(字母“R”):

使用 OpenGL 和 VC++ 来创建位图的挤压效果最好的方法是什么?参数是一个 3f 向量。实体挤压或仅表面挤压都可以。

有什么想法吗?

【问题讨论】:

  • OpenGL 在这里不会帮助你。你将不得不在 CPU 上生成它。

标签: c++ visual-c++ opengl vector bitmap


【解决方案1】:

就像经常说的那样:OpenGL“只是”一个绘图 API,将三角形光栅化到屏幕上。它不处理场景。它不处理几何。

位图的拉伸需要两个特定的任务,OpenGL 无法为您完成这两个任务:矢量化轮廓。挤压轮廓。困难的部分是矢量化,平面封闭路径的挤压很简单。

【讨论】:

    【解决方案2】:

    我有一个解决方案,但它利用纹理 3D 功能进行实体挤压,所以它真的很慢:

    “按矢量长度复制位图数据(像素数据)以创建 3D 纹理”

    但是,这只是垂直挤压(垂直向量),坦率地说,它很慢。

    【讨论】:

    • 将 2D 纹理转换为 3D 纹理没有任何好处。坦率地说,您只是在浪费内存,因为您可以通过将第 3 个纹理坐标投影到 0 来获得相同的效果。3D 纹理不会为您提供体积对象,这不是它们的工作方式。 3D 纹理允许您从体积中抓取“切片”以应用于平面图元。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多