2011-04-18 116 views
0
static GLuint selectBuff[BUFFER_LENGTH]; 
glSelectBuffer(BUFFER_LENGTH, selectBuff); 
.. 
//Draw something.. 
.. 
// Collect the hits 
hits = glRenderMode(GL_RENDER); 
.. 
.. 
if(hits > 0){ //something's been selected 
     fprintf(stderr,"something has been selected"); 
     unsigned int choiche; 

     // fi there's more than one figure (or control point) selected, take the top one 
     if (hits > 1) 
       choiche = selectBuff[(hits*4)-1]; 
     else 
       choiche = selectBuff[3]; 
     cpsel = false; 

我基本上想知道selectBuff的结构。作者含义selectBuff[3]selectBuff[(hits*4)-1]是什么意思?在opengl中glSelectBuffer的返回值

官方文档说,缓冲区返回名称堆栈中的值。但是,这并不能告诉我作者的意思是selectBuff[3]

欲了解完整的代码(这是一个绘图程序)see here

回答

1

http://www.opengl.org/sdk/docs/man/xhtml/glSelectBuffer.xml

“的热播记录由当时的事件 中名堆栈名的数量 的,然后是所有 顶点击中的最低 和最大深度值自从之前的 事件,其次是名称堆栈 的内容,名字第一。“

因此,它应该是名称堆栈的内容。

+1

最大深度值是不是selectBuff [2]? – Bart 2011-04-18 16:50:04

+0

它必须是星期一。是的 - 编辑答案 - 谢谢你的收获。 – holtavolt 2011-04-18 18:01:14

+0

链接已死亡。 https://www.opengl.org/sdk/docs/man2/xhtml/glSelectBuffer.xml – scry 2015-07-19 06:39:33