要从'GL_DEPTH_STENCIL_ATTACHMENT'对应的缓存区中提取出深度数据,可以使用OpenGL的帧缓冲对象(Frame Buffer Object,FBO)和像素读取函数。

首先,创建一个帧缓冲对象并绑定它:

GLuint fbo;
glGenFramebuffers(1, &fbo);
glBindFramebuffer(GL_FRAMEBUFFER, fbo);

然后,将深度数据附加到帧缓冲对象上:

glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, depthStencilAttachment);

接下来,创建一个临时数组来存储深度数据:

GLfloat* depthData = new GLfloat[width * height];

使用像素读取函数'glReadPixels()'从帧缓冲对象中读取深度数据:

glReadPixels(0, 0, width, height, GL_DEPTH_COMPONENT, GL_FLOAT, depthData);

最后,解绑帧缓冲对象并释放临时数组:

glBindFramebuffer(GL_FRAMEBUFFER, 0);
delete[] depthData;

现在,深度数据将存储在'depthData'数组中。可以根据需要进行进一步处理或分析。


原文地址: http://www.cveoy.top/t/topic/pleH 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录