在opengl的上下文中读到这个我找到了2个解决方案:
如果直线大于1像素,则绘制1像素线但使用Alpha混合使其部分可见。 +更好的结果 - 带有z缓冲的问题(你必须对行进行排序)
绘制GL_QUAD而不是线 - 您必须自己计算4个顶点坐标 - 在应用程序中或使用顶点着色器。 +使用亚像素精度正确绘制的细线 -line可以出现'虚线'因为片段适合'屏幕上有两个像素,因此没有被绘制。"
https://www.opengl.org/discussion_boards/showthread.php/146742-Line-width-less-than-1-pixel
我如何处理?
答案 0 :(得分:1)
您可以使用strokeWeight()
函数并传入小于1
的值:
strokeWeight(.5);
line(0, 0, width, height);
可以在the reference找到更多信息。
或者,如果您想与OpenGL方法更紧密地对齐......
如果直线大于1像素,则绘制1像素线但使用Alpha混合使其部分可见。
只需将stroke()
设置为包含alpha的值即可。像这样:
stroke(0, 128);
line(0, 0, width, height);
可以在the reference找到更多信息。
绘制GL_QUAD而不是线 - 你必须自己计算4个顶点坐标 - 在应用程序中或使用顶点着色器。 +使用子像素精度线正确绘制的细线可以显示为“虚线”,因为片段在屏幕上的两个像素之间拟合,因此不会被绘制。“
您可以使用beginShape()
函数并传入QUADS
参数来绘制四边形。像这样:
beginShape(QUADS);
vertex(0, 0);
vertex(0, 0);
vertex(width, height);
vertex(width, height);
endShape();
同样,可以在the reference中找到更多信息。
然后,您可以使用各种着色器函数来使用着色器。你猜对了:在the reference
中可以找到更多信息除了将您指向Google和the reference之外,很难回答一般的“我该怎么做”这类问题。参考应该是你的第一站。仔细阅读并查找设置alpha值的函数,或绘制四边形或使用着色器。 Stack Overflow更专为特定的“我试过X,期望Y,但得到Z而不是”类型的问题,所以你能做的最好的事情就是尝试一些事情并发布MCVE如果你卡住了祝你好运。