当使用过剩时,我使用glutsolidsphere绘制我的球体,但是移动到glfw后,我不得不使用glusphere。我基本上将整个函数“glutsolidsphere”复制到我自己的代码中,但是在我没有之前我遇到了一个奇怪的光照问题。下面是球体的代码:
void drawSolidSphere(GLdouble radius, GLint slices, GLint stacks)
{
GLUquadric *shape = gluNewQuadric();
gluQuadricDrawStyle(shape, GLU_FILL);
gluQuadricNormals(shape, GLU_SMOOTH);
gluSphere(shape, radius, slices, stacks);
}
这里的问题是什么?
编辑:出于某种原因,我无法从大学上传图片,所以我会尝试描述它:球体轮廓看起来很好,但是你可以看到内部的片段,就像球体的外部是透明的,它导致在这个领域存在明显的分歧。
答案 0 :(得分:1)
看起来深度测试存在问题。
假设你有一个来自glfw的深度缓冲区,这会解决吗?
glEnable(GL_DEPTH_TEST);
我没有使用过glfw,但是为了请求深度缓冲区,你只需要传递24例如depthbits
的{{1}}参数。
如果您尚未加入glfwOpenWindow
,则还需要GL_DEPTH_BUFFER_BIT
。
我之前在使用glut / freeglut的windows和linux中遇到了默认GL状态(特别是GL_DEPTH_TEST)的不一致。