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 - 控制片段中的线条粗细。的主要内容,如果未能解决你的问题,请参考以下文章
R语言R原生以及ggplot2设置线条类型宽度(粗细)颜色的函数ggplot2手动自定义设置线条类型粗细颜色函数(line typesthicknesscolour)
R语言ggplot2可视化使用lwd和flatten参数调整箱图(boxplot)线条的粗细:中位线和其他线条整体粗细比例更协调