【发布时间】: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 - 如果球体始终处于其原始位置,这会起作用 - 我旋转它,那我该怎么办?
标签: opengl glsl line antialiasing vbo