OpenGL 3.2核心配置文件glLineWidth

问题描述:

我在Mac OS X上设置了一个OpenGL 3.2 Core上下文。我希望能够在屏幕上绘制一些厚黑色的喜欢。在以前的OpenGL版本中,我只能设置OpenGL 3.2核心配置文件glLineWidth

glLineWidth(10.0f); 

我将得到一条10像素宽的线。然而,当我检查3.2中的线宽度范围时,我得到的值为1,对于平滑线,0-1为平滑线。如何在屏幕空间中制作10.0像素宽的线?有没有简单的方法来绘制这不是每个线段的矩形?

利用OpenGL 3.2纤芯分布,主叫glLineWidth具有大于1.0的值给出一个错误INVALID_VALUE(呼叫glGetError来证明这一点)。

当然,您可以通过确定画线所需的四边形来得到想要的结果。

我想你应该能够从线点生成四边形:哎,一个更大的线是四!也许你可以使用this这样的技术来获得你想要的结果。

的关键是:不是依靠线宽,你给一个单元的四作为输入(使用三角形带4个顶点),然后变换传递给它适当制服着色器内输入的顶点。

也许另一种方法是使用几何着色渲染:生成从点四。但是,我不确定这一点。我不知道几何着色器(当然,只有当它可行时)才是最好的方法:使用单个四边形绘制线条的成本将是构成条的每条线的着色器统一设置。

+0

看起来最好/唯一的方法是通过初始几何或几何着色器绘制完整几何图形。 – user1139069 2012-01-11 06:04:31

这可能取决于您设置的投影类型。你使用正交投影矩阵还是透视投影矩阵?

我认为,如果不使用的正投影,原始的最后栅格化将受到所述对象(模型矩阵)的从照相机(视图矩阵)的距离。

干杯

+0

我正在使用正投影。 – user1139069 2012-01-09 16:34:58