看《OpenGL编程指南》里第13章选择与反馈,有些云里雾里,于是上网搜一些关于这方面的来看,终于觉得弄清楚一点了,在这里写下些我的理解。
首先推荐看一篇博文 http://blog.sina.com.cn/s/blog_4a9aa55c0100vu57.html (文章1),我是看了这个才明白的,然后又看了http://blog.sina.com.cn/s/blog_6923201d01011hur.html(文章2)里面的例子。还有一篇文章,非常强大的从矩阵和投影变换原理方面解释了选择的原理:http://hi.baidu.com/ayokawamadoka/item/74a9af254c063afb51fd8740 (文章三)。这里只说说我理解的一些部分。
1.glLoadName()和glPushName()
文章1和2的例子用到了glLoadName();,我开始不明白它与glPushName()的区别,后来查了下:
void glLoadName(GLuint name):
用name取代名字栈栈顶的那个名字。如果栈是空的,刚调用过glInitName()后就是这样,glLoadName()生成一个GL_INVALID_OPRATION错。为避免这种情况,如果栈初始时是空的,那么在调用glLoadName()之前至少调用一次glPushName()以在名字栈中放上点东西。
void glPushName(GLuint name);
将name压入名字栈。压入名字超过栈容量时将生成一个GL_STACK_OVERFLOW错误。名字栈深度因