【问题标题】:Drawing a "3D-looking" line in OpenGL在 OpenGL 中绘制“3D 外观”线
【发布时间】:2011-04-30 15:35:47
【问题描述】:

当你在 OpenGL 中画一条线时,glLineWidth 会创建一条固定大小的线,不管这条线离你有多近。

我想画一条靠近时会显得更大的线。现在,我明白了,如果我使用矩形来实现这种效果,一旦多边形足够远,它就会看起来有点像素化。

我之前所做的是绘制一个普通的 GL_LINE 直到线条变得大于像素大小的点,然后从该点继续绘制一个矩形。但是,它不如将所有内容放入顶点数组或 VBO 那样快,因为它必须每帧都重新计算。

还有哪些其他方法可用?还是我被这个困住了?

【问题讨论】:

  • 固定功能还是可编程流水线?
  • 你在寻找多大的尺寸差异?
  • 当我查看falloutsoftware.com/tutorials/gl/gl0.htm 时,3D 效果可以通过简单的线条来实现,我们的大脑只是让它看起来像 3D。为什么你需要让线条变得更小?

标签: opengl


【解决方案1】:

我喜欢用这样的渐变纹理来画线:

这确实是我的纹理的 Alpha。所以你有一个完全不透明的中心褪色到边缘完全透明。然后你可以用一个带点的矩形来画你的线:

(x1,y1,0,0), (x2,y1,1,0), (x1,y2,0,1), (x2,y2,1,1)

每个元组中的最后两个条目是纹理的 u 和 v。它最终看起来非常光滑。您甚至可以将许多非常小的矩形串在一起形成曲线。

【讨论】:

  • 呃……顺便说一句,这是用于二维绘图的。也许不是你想要的!
【解决方案2】:

如果您只是绘制一堆线条并想要快速简单的深度效果,请尝试添加雾。线条后退时的衰减使我们的大脑认为它们是 3d 的。如果近端真的靠近观察者,这将不起作用。

【讨论】:

    【解决方案3】:

    如果你想让你的线在近端更粗而在远端更细,我想你必须从多边形建模它们。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-01-07
      • 1970-01-01
      • 1970-01-01
      • 2022-11-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多