OpenGL中的彩色球体

3

好的,这是一段关于C++代码的链接:http://pastebin.com/nfPmd0um(带有波兰语注释;) 我想制作一个被四个平面分割的球体。每个部分应该有不同的颜色。目前它只显示了两个有颜色的部分。我知道在Display()函数中有一部分代码出了问题:

glEnable (GL_CLIP_PLANE0 +i);
glDisable (GL_CLIP_PLANE1 -i);

glEnable (GL_CLIP_PLANE2 +i);
glDisable (GL_CLIP_PLANE3 -i); 

有人知道我应该改什么吗?提前谢谢 :)


一种有趣的做法。在StackOverflow上记得使用四个空格缩进你的代码,欢迎加入! - Xavier Ho
2个回答

1
为什么在你的glEnable/Disable调用中使用+ i。这意味着在i增加到1之后,您正在修改索引(GL_CLIP_PLANE3)上方的平面,并且您没有在那里定义任何平面。
因此,请从您的glEnable/Disable代码中删除“i”,并使用类似于(mod(i,4)== i%4)的内容。
Ketan

0

我同意Ketan的观点。也许你正在寻找这个:

glEnable (GL_CLIP_PLANE0 +i );
glDisable (GL_CLIP_PLANE0 + (1+4-i)%4);

glEnable (GL_CLIP_PLANE0 +(2+i)%4);
glDisable (GL_CLIP_PLANE0 +(3+4-i)%4); 

例如,(1+4-i)%4 部分会在 i 从 0 1 2 3 变化时给出序列 1 0 3 2。同样地,最后一个剪裁平面会迭代 3 2 1 0。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接