有没有可能用GL_TRIANGLES和GLSL划清界限?
我问这个问题的原因是我试图用adobes molehill画一条线,但它只画了三角形。
干杯
发布于 2011-03-28 19:28:29
如果将边渲染设置为打开,则只需将点1和点3绘制在同一位置即可。它不是很有效,但它是有效的。
发布于 2017-06-01 16:30:07
如果可以,请使用几何体着色器。传入两个顶点和一个线宽,通过移动顶点生成4个形成两个三角形的点,渲染并完成...但是在没有几何着色器的情况下使用三角形绘制宽线也可以在OpenGL ES 2.0 (没有几何着色器)和桌面OpenGL中仅使用顶点着色器来完成:
生成顶点数据,以便为每条线复制顶点(每条线4个顶点)。对于每个顶点,为上一条线和下一条线的顶点传递两个额外的vec2/vec3属性(用于计算正确的线连接),或者简单地传递vec2/vec3线方向。同时添加一个表示“法线”的浮动顶点属性,也就是移动每个顶点的方向。对于直线的一个端点(现在使用两个顶点),将“法线”设置为一个方向,将重复顶点设置为相反方向。生成这些顶点的三角形(通过索引或其他方式),并使用GL_TRIANGLES进行渲染。
在顶点着色器中,使用顶点和上一个或下一个顶点来计算线方向,并(在2D情况下很简单)生成一个垂直于它的向量。将其乘以您作为顶点属性传递的"normal“。这会将你的线条“移到边上”,这样就会生成一个实际的三角形。
在2D中生成具有正确像素大小的线条很简单(虽然使用均匀缩放,但也可以使用非均匀缩放)-使用模型视图矩阵(例如modelView)中的比例因子,并在顶点着色器中将线宽除以它。在3D中,这有点复杂...
https://stackoverflow.com/questions/5458185
复制相似问题