opengl深度测试
我现在有一个三角网格模型,我现在想生成某一视点下深度图,启用opengl深度测试功能,然后从深度缓存中读取深度,深度值全为1,不正确啊,下面附我的opengl显示部分代码,望各位大哥帮忙看下(我的模型能够正确显示).
void redrawDepth()
{
ViewPort port;
xform modeview;
xform projection;
point center;
readCameraPar("model\\1\\camera1.in",port,center,modeview,projection);//我的投影矩阵,视图模型矩阵是先已经有了
GLfloat light_pos[4] = { center[0], center[1], center[2], 0.0 };
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
// glEnable(GL_LIGHTING);//我只生成深度,不启用光照
//glLightfv(GL_LIGHT0, GL_POSITION, light_pos);
//glEnable(GL_LIGHT0);
glDisable(GL_BLEND);
glEnable(GL_DEPTH_TEST);
//载入我自己的投影,视图矩阵
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glMultMatrixd(modeview);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glMultMatrixd(projection);
glColor3f(0,1,0);
mesh->drawTrigleMesh();//画三角模型glBegin(GL_TRIANGLES);顶点坐标glEnd();
glutSwapBuffers();
//读取深度
IplImage * depthmap=cvCreateImage(cvSize(port.width,port.hegith),IPL_DEPTH_8U,1);
float * depth=new float[port.width*port.hegith];
glReadPixels(0,0,port.width,port.hegith,GL_DEPTH_COMPONENT,GL_FLOAT,depth);//读取深度
for(int i=0;i<port.width*port.hegith;i++)
depthmap->imageData[i]=static_cast<unsigned short>((depth[i]*256)/256);
delete [] depth;
cvSaveImage("model\\1\\1d.bmp",depthmap);
cvReleaseImage(&depthmap);
}