【发布时间】:2014-05-01 16:58:41
【问题描述】:
我喜欢在 OpenGL 环境中使用 gluSphere() 绘制球体。但是,我希望我可以在球体周围画一个边框,边框是一个与相机框架完美对齐的圆,这样圆实际上总是一个圆,而不是从不同角度看的椭圆。我正在使用一个为我设置 OpenGL 环境并处理相机的框架。当我画画时,我总是在世界坐标中思考,所以我觉得完成这个任务很困难。我希望将解决方案嵌入到我最深层次的 OpenGL 绘图命令中,如下所示:
// Draws a sphere with a camera plane aligned border around it (you wish).
void GLLib::drawBorderedSphere(float radius)
{
static GLUquadric* quadric = gluNewQuadric();
gluSphere(quadric, radius, 32, 32);
// Determine a rotation matrix depending on the current camera configuration.
// glRotate(somehow);
// drawCircle(radius); <-- this I already have.
}
谁能帮忙?
【问题讨论】:
-
根据您想对球体做什么,您甚至可以使用更少的几何体将它们渲染为冒名顶替者:stackoverflow.com/questions/10488086/…,然后在片段着色器中使用球体的边界画一个边框。
-
虽然 drawCircle(radius) 在许多情况下是球体轮廓的精细近似值,但请记住,它对于许多球体和投影并不完全正确。例如,透视投影引入了鱼眼效应,使得视图外围的球体非线性失真。甚至当观察一个球体时,视线与球体相切的一组点——轮廓——是一个圆,其世界空间中心比球体中心更近,其半径更小。视觉示例:dchelsea.com/wp/?p=4575
标签: opengl