深度緩紋理

2021-05-23 06:18:28 字數 1481 閱讀 8026

//

// 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,

glgenframebuffer***t( 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 ) ;

將紋理對映到其他物體

注:如果看不到紋理效果,有可能是設定的視點離物體太大或者太小,使得生成的深度資料集中太大或者太小

UntiyShader之深度紋理

unity是可以取得物體的深度值,相當於可以取得z buffer的值,這個需要在相機上獲得,另外需要硬體支援 首先在相機上開啟獲取深度渲染 getcomponent depthtexturemode depthtexturemode.depth 然後就可以在shader中使用了,需要先申明 samp...

怎樣使用深度紋理

這個問題經常出現,所以我試著來總結一下ati和nvidia晶元對於深度紋理的支援情況.如果發現我說錯了nvidia的深度實現,請告知我 ati和nvidia在硬體上都支援深度紋理,雖然方法不一樣.深度紋理的建立非常相似 的格式 ati 了兩個fourcc 來建立16或24位深度的紋理 define ...

深度插值與透視紋理對映插值

在模型空間,世界空間,相機空間和剪裁空間中三角面上的紋理座標與空間座標是線性關係,按空間座標進行線性插值即可求得紋理座標。但在透視投影模式下在歸一化裝置空間和視口空間中紋理座標與空間座標就不再是線性關係了,要在歸一化裝置空間或視口空間插值計算紋理座標,需要進行非線性插值。其原因就在於透視投影模式下由...