【发布时间】:2010-12-06 18:06:45
【问题描述】:
如何从任何 OpenGL 绘图中获取深度和颜色信息?我想将深度图像和彩色图像保存到磁盘。我尝试的是以下内容:
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glEnable(GL_DEPTH_TEST);
glBegin(GL_POINTS);
glColor3f(1.0f,1.0f,1.0f);
for(int i=0; i<mesh->vertices.size();i++) {
if(! mesh->colors.empty()) {
glColor3f(mesh->colors[i][0],mesh->colors[i][1],mesh->colors[i][2]);
}
float x= mesh->vertices[i][0];
float y= mesh->vertices[i][1];
float z = mesh->vertices[i][2];
glVertex3f(x, y, z);
}
glEnd();
glFlush();
glFinish();
int width = 1280;
int height = 960;
GLfloat* depths;
depths = new GLfloat[ width * height ];
GLfloat * color;
color = new GLfloat[width * height];
glReadPixels (0, 0, width, height, GL_DEPTH_COMPONENT, GL_FLOAT, depths);
glReadPixels (0, 0, width, height, GL_BLUE, GL_FLOAT, color);
但看起来只有深度数组被填充了?
【问题讨论】:
-
你的“网格”顶点颜色中是否有蓝色?
-
是的,他们做到了..!但还是同样的问题.. 试过这个: IplImage* toSave = cvCreateImage(cvSize((int)width,(int)height), IPL_DEPTH_32F, 3); glReadPixels(0, 0, (int)width, (int)height, GL_BGR, GL_FLOAT, toSave->imageData); toSave->原点 = 1; cvSaveImage("test.png", toSave);
-
如果我在 qglviewer 中使用相同的,它的工作原理.. 但我不知道为什么..
标签: opengl framebuffer depth-buffer