今日の発明はこれ。
struct MyGlVertex3fv { void operator()( const Vec3& v ) const { glVertex3fv( v.V() ); } };
例えばこう使う(↓)
vector< Vec3 > vv; for( int i=-10; i<=10; ++i ){ vv.push_back( Vec3( -10, i*.08, 0 ) ); vv.push_back( Vec3( +10, i*.08, 0 ) ); vv.push_back( Vec3( i*.08, -10, 0 ) ); vv.push_back( Vec3( i*.08, 10, 0 ) ); }// i // があったとしてー、 glBegin( GL_LINES ); { std::for_each( vv.begin(), vv.end(), MyGlVertex3fv() );// ★ } glEnd();
↑これって何かよくないすか。なんつーかこう、★の一行で書けてしまうという書き方が。ごちゃごちゃしてないし。他にも例えば、
struct MyGlNormal3fvVertex3fv{ void operator()( const MyVertex* ivtx ) const { glNormal3fv( ivtx->Normal().V() ); glVertex3fv( ivtx->Position().V() ); } };
などとも持っておくと、便利なことありそうな予感。
glBegin( GL_TRIANGLE_STRIP );
{
std::for_each( vtxVec.begin(), vtxVec.end(),
MyGlNormal3fvVertex3fv() );// ★
}
glEnd();
とか書けてあまりにもコードが見やすいっすー。
そんだけ。