1. OpenGL的反馈机制
反馈和选择具有一个相似之处,在这两种模式下,不会产生任何像素,并且屏幕被冻结。
在选择模式下,一些已分配的名称被返回到一个整形数组中;在反馈模式下,与经过变换的图元有关的一些信息被返回到一个浮点型数组中。
2. 使用步骤
//在绘制了场景之后,开始进入以下代码
(1)
GLfloat feedBuffer[1024];
//指定保存反馈数据的数组,GL_3D_COLOR表示返回的顶点数据由坐标(x,y,z)和颜色(r,g,b,a)组成
glFeedbackBuffer(1024, GL_3D_COLOR, feedBuffer);
(2)
glRenderMode(GL_FEEDBACK);
(3)
//绘制两条线
glBegin(GL_LINE_STRIP);
glNormal3f( 0.0, 0.0,1.0);
glVertex3f(30.0, 30.0, 0.0);
glVertex3f(50.0, 60.0, 0.0);
glVertex3f(70.0, 40.0, 0.0);
glEnd();
glPassTrough(1.0);
//绘制一个点
glBegin(GL_POINTS);
glNormal3f(0.0, 0.0, 1.0);
glVertex3f(50.0, 50.0, 0.0);
glEnd();
glFlush();
(4)
GLuint size = glRenderMode(GL_RENDER);
(5)
//处理返回的图元数组
GLuint count = size;
GLfloat token;
while( count )
{
}