OpenGL 440 - 控制片段中的线条粗细。

Posted

技术标签:

【中文标题】OpenGL 440 - 控制片段中的线条粗细。【英文标题】:OpenGL 440 - controlling line thickness in frag. 【发布时间】:2014-09-18 15:52:20 【问题描述】:

我正在使用顶点 VBO 和 GL_LINES 在 opengl 中绘制 3D 球形网格。我想要实现的是让一条线——天顶——比其他的更亮。

我显然存储了 x、y、z 坐标和法线,然后我想我可以使用纹理坐标来“标记”创建时的位置 - y 坐标为 0。就像这样:

        if (round(y) == 0.0f) 
            _varray[nr].tex[0] = -1.0; // setting the s variable (s,t texcoord),
                                       // passed in with vbo
        

现在在片段着色器中我收到这个值并执行:

if(vs_st[0] == -1)
    diffuse = gridColor*2.f;
else
    diffuse = gridColor;

结果看起来有点糟糕: Print Screen

我意识到这可能是由于片段着色器必须在两点之间进行插值,你们能想出一个识别天顶线并使其更亮的好方法吗?我宁愿避免使用几何着色器...

【问题讨论】:

在片段着色器中,尝试使用if(vs_st[0] > 0.5) @ColonelThirtyTwo - 如果球体始终处于其原始位置,这会起作用 - 我旋转它,那我该怎么办? 【参考方案1】:

解决办法是这样的:

if (round(y) == 0.0f) _varray[nr].tex[0] = -2; // set arb. number. 

然后不要在其他任何地方设置该变量!然后在片段中:

if( floor(vs_st[0]) == -2)
    diffuse = gridColor*2.f;
else
    diffuse = gridColor;

不知道这有多整洁,但它确实有效。

【讨论】:

以上是关于OpenGL 440 - 控制片段中的线条粗细。的主要内容,如果未能解决你的问题,请参考以下文章

Unity3D 卡通描边之控制线条粗细

如何更改 CSS 中的删除线/线条粗细?

R语言R原生以及ggplot2设置线条类型宽度(粗细)颜色的函数ggplot2手动自定义设置线条类型粗细颜色函数(line typesthicknesscolour)

canvas 绘图画出的线条粗细不一致

如何防止 SVG 线条的粗细和间隙不一致?

R语言ggplot2可视化使用lwd和flatten参数调整箱图(boxplot)线条的粗细:中位线和其他线条整体粗细比例更协调