深度缓纹理

17 篇文章 0 订阅

//
  // Create A Texture Object Storing Color
  glGenTextures( 1, &m_uDepthTexId ) ;
  glBindTexture( GL_TEXTURE_2D, m_uDepthTexId ) ;
  glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
  glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
  glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
  glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
  glTexImage2D(GL_TEXTURE_2D, 0, GL_DEPTH_COMPONENT, m_nImageWidth, m_nImageHeight, 0, GL_DEPTH_COMPONENT, GL_FLOAT, 0);
  glBindTexture( GL_TEXTURE_2D, 0 ) ;

  //
  // Create A Frame-buffer Object,
  glGenFramebuffersEXT( 1, &m_uDepthFboId ) ;
  glBindFramebufferEXT( GL_FRAMEBUFFER_EXT, m_uDepthFboId ) ;
  //
  // Attach A Texture Depth Attachment Point
  glFramebufferTexture2DEXT( GL_FRAMEBUFFER_EXT, GL_DEPTH_ATTACHMENT_EXT, GL_TEXTURE_2D, m_uDepthTexId, 0 );  // For Depth
  glDrawBuffer( GL_NONE ); // No Color Buffer
  glReadBuffer( GL_NONE );

  //
  // Restore System Frame-buffer
  glBindFramebufferEXT( GL_FRAMEBUFFER_EXT, 0 ) ;
  glDrawBuffer( GL_BACK );
  glReadBuffer( GL_BACK );

 

glBindFramebufferEXT( GL_FRAMEBUFFER_EXT, m_uDepthFboId ) ;

绘制内容到深度缓冲

glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0); // Unbind

 

glBindTexture( GL_TEXTURE_2D, m_uColorTexId ) ;

将纹理映射到其他物体

 

注:如果看不到纹理效果,有可能是设置的视点离物体太大或者太小,使得生成的深度数据集中太大或者太小

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值