opengl中如何判断网格模型中哪些顶点在可见面上?
场景中有一3d网格模型
我想用鼠标拉一个矩形框选择可见面上某些点
但不想背面的点也被选中
请问具体怎么做?
我试过用顶点的法线向量,判断其是否与当前视点的方向夹角<90度
但这种方法在面对复杂网格模型时,会有选择上的误差
我还想用深度缓存的方法,读取每一个网格模型顶点的窗口坐标,然后读取相应点的深度值,与顶点的深度值做对比,但实现的效果不对,不知道哪儿出错了,请帮忙看一下:
//GLfloat winZ = 0.0f; //用来保存windows窗口坐标(wx,wy)处的深度值(0-1之间)
//
//glReadPixels(wx, //x坐标
// viewport[3] - wy, //y坐标
// 1,1, //读取一个像素
// GL_DEPTH_COMPONENT, //获得深度信息
// GL_FLOAT, //数据类型为浮点型
// &winZ); //获得的深度值保存在winZ中
//
////判断该点深度值是否与深度缓存中的值一致
//if((float)winZ <= (float)wz)
// _mesh->_vertexlist[i].setSelected(true);
//else
// _mesh->_vertexlist[i].setSelected(false);