从GL_DEPTH_STENCIL_ATTACHMENT缓存区提取深度数据
要从'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 著作权归作者所有。请勿转载和采集!