c++ - 渲染到立方体贴图数组
问题描述
我正在尝试生成一个立方体贴图数组并保存深度值等。我已经确认它是由 glCheckFramebufferStatus 正确生成的,但是当我实际渲染它时,它不存储任何东西。简单的代码如下所示。
// Initialize
glGenTextures(1, &CubeMap);
glBindTexture(GL_TEXTURE_CUBE_MAP_ARRAY, CubeMap);
for (int j = 0; j < 6; j++) {
glTexImage3D(GL_TEXTURE_CUBE_MAP_POSITIVE_X + j, 0, GL_RGBA16F, 512, 512, ArrayNum, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0);
}
glTexParameteri(GL_TEXTURE_CUBE_MAP_ARRAY, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_CUBE_MAP_ARRAY, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_CUBE_MAP_ARRAY, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
glTexParameteri(GL_TEXTURE_CUBE_MAP_ARRAY, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
glTexParameteri(GL_TEXTURE_CUBE_MAP_ARRAY, GL_TEXTURE_WRAP_R, GL_CLAMP_TO_EDGE);
glGenRenderbuffers(1, &CubeMapRBO);
glBindRenderbuffer(GL_RENDERBUFFER, CubeMapRBO);
glRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH_COMPONENT16, 512, 512);
glBindRenderbuffer(GL_RENDERBUFFER, 0);
// Render to CubeMap Array
for(int i = 0; i < ArrayNum; i++) {
for(int j = 0; j < 6; j++) {
glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_CUBE_MAP_POSITIVE_X + j, CubeMap, i);
glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, CubeMapRBO);
}
}
在 2D 纹理数组的情况下,它似乎使用 glFramebufferTextureLayer 而不是 glFramebufferTexture2D,但是当我将其应用于立方体贴图时,返回了错误。如果有人知道什么,请发表评论。
解决方案
推荐阅读
- c# - Realm.io 多对多
- python - 如何估计线性时间趋势的 ARMA 模型
- python - 带有 python 代码的 docker-compose 返回 Errno 13: Permission denied './.eggs'
- ios - WKWebView 在旋转后改变其内容偏移滚动(方向改变)
- html - 如何为多个条件编写内联 ng 样式
- tkinter - Tkinter 可以识别在树视图中选择了哪个标题吗?
- python - 图像显示为乱码 Flask/Jinja
- r - 在 R 中使用 SHAPforxgboost 计算新观测值的 SHAP
- selenium - Selenium Webdriver 使用 Chrome 错误并出现“未处理的检查器错误:{“code”:-32000,“message”:“请求内容已从检查器缓存中逐出”}”
- amazon-web-services - 如何从我的 AWS 实例的公共 IP 地址运行 ThingsBoard