创建openGl renderbuffer,没有框架绑定
Creating Opengl renderbuffer with no framebuffer bound
我注意到我使用框架缓冲区进行屏幕外渲染时注意到了一些奇怪的事情。我正在将一个立方体呈现到纹理,然后将纹理放在飞机上。一切都起作用了,我决定跳过深度缓冲区,因此我评论了第1块&第2块(请参见下面的代码),但是,如果我将块1保持完好无损,并且仅注释块2,则飞机变黑。
我假设通过评论块2,渲染布夫将是一个渲染布,与Framebuffer没有关联。
在每个示例中,我都能找到在创建渲染程序之前总是有一个框架绑定器,但是我在文档中找不到任何说明的框架。它应该与仅评论block2并离开块1?
一起使用// create render buffer to store depth, at this point the default framebuffer is bound
{ //BLOCK 1
glGenRenderbuffers(1, &handle);
glBindRenderbuffer(...);
glRenderbufferStorage(...);
glBindRenderbuffer(GL_RENDERBUFFER, 0);
}
如果我让上面的代码在块2被评论时运行,则在屏幕上纹理变黑。
// create texture as a color attachment
glGenTextures(1, &handle);
glBindTexture(GL_TEXTURE_2D, handle);
glTexImage2D(...);
// filter, wrap omitted
glBindTexture(GL_TEXTURE_2D, 0);
在采样时测试了上面的纹理绑定,并且可以很好地工作。
// creating framebuffer
glGenFramebuffers(1, &handle);
glBindFramebuffer(GL_FRAMEBUFFER, handle);
// attach my render buffer as a depth attachment
{ // BLOCK 2
glFramebufferRenderbuffer(...)
}
如果我评论第2块&块1它都可以使用(例如带有颜色附件的框架挡板)
// binding texture as an attachment to frame buffer
glFramebufferTexture2D(...);
glDrawBuffers(1, drawBuffers);
glBindFramebuffer(GL_FRAMEBUFFER, 0);
上面的所有代码都是按照此顺序执行的,并且没有其他OpenGL调用。
找到了错误。由于课堂的抽象,当纹理类别不范围时,删除了纹理。此纹理句柄设置为0,为默认值,使用此句柄ID的另一种纹理被删除。
相关文章:
- 我想将一个对T类型的非常量左值引用绑定到一个T类型的临时值
- 在基于范围的for循环中使用结构化绑定声明
- 使用 LuaBridge 将 LuaJIT 绑定到C++会导致"PANIC: unprotected error"
- 尝试通过OCI例程从Oracle获取blob数据,但出现错误:ORA-01008:并非所有变量都绑定
- 在使用GPU支持编译Tensorflow时,会遇到CUDA_TOOLKIT_PATH未绑定变量
- 视觉studo 2019中的漫画和静态/动态绑定
- 将自由函数绑定为类成员函数
- 将常量指针引用绑定到非常量指针
- 在派生类中绑定非静态模板化成员函数
- 绑定派生类方法C++从实例范围之外的分隔 std::function 变量调用
- 在 openGL 中多次绑定缓冲区
- 定义有趣的宏和正则表达式在Z3 C++绑定
- 使用结构化绑定'Reflection'
- 为什么 std::绑定错误参数可以成功?
- 如何绑定 C++ gRPC 客户端的网络接口
- 在 openmp 中,omp_get_thread_num是否绑定到物理线程?
- C++绑定(已弃用)
- 运行时错误:引用绑定到类型为"int"的空指针
- 有没有办法将重载的类函数绑定到函数对象?
- 创建openGl renderbuffer,没有框架绑定