代码之家  ›  专栏  ›  技术社区  ›  Gizmo

线顶点太厚(无论宽度是多少)

  •  0
  • Gizmo  · 技术社区  · 11 年前

    我正在用我制作的函数画3条线(简化的工作示例):

    template<class... Args> inline void DrawPoly(float width , int color, Args... args)
    {
        glLineWidth(width); 
        ofSetHexColor(color);
        glBegin(GL_LINES);
        std::array<ofPoint, sizeof...(args)> list = {args...};
        for(size_t i = 1, j = list.size(); i < j; ++i)
        {
            glVertex3f(list[i-1].x, list[i-1].y, list[i-1].z);
            glVertex3f(list[i].x, list[i].y, list[i].z);
        }
        glEnd();
    }
    

    它做得很好,但我无法得到1像素大小的好线条。不管我怎么设置宽度。

    这就是我调用函数的方式:

    DrawPoly(0.001,0x77777777,ofPoint(150,150),ofPoint(200,150),ofPoint(200,200),ofPoint(150,200));
    

    这就是结果(无论我设置的宽度有多低!):

    enter image description here

    我不明白为什么会发生这种情况,我正试图从directX切换,等效代码给出了我需要的结果:

    enter image description here

    我该怎么解决这个问题?我所有的线形/多边形代码都会出现这种情况!:(

    1 回复  |  直到 11 年前
        1
  •  3
  •   datenwolf    11 年前

    最有可能的是,您在具有全屏抗锯齿功能的帧缓冲区(多重采样)上进行渲染,但没有达到精确的像素中心。所以你的线实际上覆盖了两行/两列像素,从而产生了这种效果。尝试如果强制禁用抗锯齿(使用GPU驱动程序控制面板)会发生什么。