本文整理汇总了C++中image_type::depth方法的典型用法代码示例。如果您正苦于以下问题:C++ image_type::depth方法的具体用法?C++ image_type::depth怎么用?C++ image_type::depth使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类image_type
的用法示例。
在下文中一共展示了image_type::depth方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: main
int main( int argc , char *argv[ ] )
{
// 入力ボリュームデータの作成
const vector_type c( ( va.width( ) - 1 ) / 2.0, ( va.height( ) - 1 ) / 2.0, ( va.depth( ) - 1 ) / 2.0 );
vector_type c0( c ), c1( c );
c0.x -= 8.0;
c1.x += 8.0;
for( size_t k = 0 ; k < va.depth( ) ; k ++ )
{
for( size_t j = 0 ; j < va.height( ) ; j ++ )
{
for( size_t i = 0 ; i < va.width( ) ; i ++ )
{
const vector_type p( static_cast< double >( i ), static_cast< double >( j ), static_cast< double >( k ) );
const double d0 = distance( p, c0 );
const double d1 = distance( p, c1 );
va( i, j, k ) = 31.5 - minimum( d0, d1 );
if( va( i, j, k ) < 0.0 )
{
va( i, j, k ) = 0.0;
}
}
}
}
// 等値面生成の前処理(入力ボリュームデータを渡す)
// 本サンプルのように描画の度に閾値を動的に変化させながら等値面生成を行う場合に生成処理時間を短縮できる
// この行をコメントアウトしたものとしないものを比較すると処理速度の違いがわかる
mcs.preprocess( va );
// 等値面生成パラメータ設定
mcs.offset( -31.5, -15.5, -15.5 );
mcs.scale( 0.1, 0.1, 0.1 );
// 等値面生成結果格納のため,大きめの領域を確保しておくことで
// ベクタの要素サイズの増加に伴うメモリ再確保の発生を抑制
pv.reserve( 32768 );
nv.reserve( 32768 );
sv.reserve( 32768 );
glutInit( &argc , argv );
glutInitWindowPosition( 100 , 100 );
glutInitWindowSize( 400 , 400 );
glutInitDisplayMode( GLUT_DOUBLE | GLUT_RGBA | GLUT_DEPTH );
glutCreateWindow( "mist::marching_cubes" );
glutDisplayFunc( disp );
glutIdleFunc( idle );
glMatrixMode( GL_PROJECTION );
glFrustum( -1 , 1 , -1 , 1 , 1 , 5 );
gluLookAt( 0.0, 0.0, 4.0, 0.0, 0.0, -1.0, 0.0, 1.0, 0.0 );
GLfloat lpos[ ] = { 0 , 0 , 4 , 1 };
glLightfv( GL_LIGHT0 , GL_POSITION , lpos );
glEnable( GL_LIGHTING );
glEnable( GL_LIGHT0 );
glEnable( GL_DEPTH_TEST );
glEnable( GL_CULL_FACE );
glCullFace( GL_BACK );
glMatrixMode( GL_MODELVIEW );
glutMainLoop( );
return 0;
}