图纸a";“3D外观”;OpenGL中的线条

图纸a";“3D外观”;OpenGL中的线条,opengl,Opengl,在OpenGL中绘制直线时,glLineWidth会创建一条固定大小的直线,而不管该直线离您有多近 我想画一条线,当它接近时会显得更大。现在,我明白了,如果我使用一个矩形来实现这个效果,一旦多边形足够远,它就会看起来有点像素化 我之前所做的是绘制一条普通的GL_线,直到该线大于像素大小的点,然后从该点继续绘制一个矩形。然而,它并没有把所有的东西都放到顶点数组或VBO上那么快,因为它必须在每一帧重新计算 还有哪些其他方法可用?还是我被这个问题困住了?我喜欢用这样的渐变纹理来画线: 这是我的纹理的

在OpenGL中绘制直线时,glLineWidth会创建一条固定大小的直线,而不管该直线离您有多近

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

我之前所做的是绘制一条普通的GL_线,直到该线大于像素大小的点,然后从该点继续绘制一个矩形。然而,它并没有把所有的东西都放到顶点数组或VBO上那么快,因为它必须在每一帧重新计算


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

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

这是我的纹理的阿尔法。因此,您有一个完全不透明的中心,边缘逐渐变为完全透明。然后,您可以使用带点的矩形绘制直线:

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


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

如果你只是画了一堆线,想要一个快速简单的深度效果,试着添加雾。线条在后退时的衰减使我们的大脑认为它们是3d的。如果近端离观看者很近,这是行不通的。

如果你想让近端的线条变粗,远端的线条变细,我想你必须用多边形来为它们建模。

固定功能或可编程管道?你在寻找大小上的差异有多大?当我看3D效果时,我们的大脑可以用简单的线条使它看起来像3D。你为什么要让线变小?呃。。。顺便说一下,这是二维绘图的。也许不是你想要的!