ポインタ型の配列を引数に渡した時の書き方
Posted: 2014年6月11日(水) 12:33
こんにちは、現在以下のようなコードがあります
要はTask型クラスのpScene1とpScene2を描画するプログラムです。ところが、最終的には描画対象が100個以上まで跳ね上がる予定です。この書き方ではその分だけ引数とDrawを継ぎ足さなくてはならないので、流石に現実的ではありません
ということで、以下のようにポインタの配列を引数に渡すようにしたのですが、呼び出すときにどう書いたらいいのかが分かりません
書き方が分かる方、ご教授願えませんでしょうか?(NUMOFOBJECTは0を超える任意の整数と考えてください)
void Renderer::renderScene2( Task* pScene1, Task* pScene2 ) {
if (pScene1 == 0 || pScene2 == 0) {
return;
}
// ビューポートと深度バッファ(バックバッファ)のクリアとステンシルバッファの削除
if ( FAILED( pD3DDevice_->Clear( 0, NULL, // クリアする領域は全面
D3DCLEAR_STENCIL | // ステンシルバッファをクリア
D3DCLEAR_TARGET | // バックバッファを指定
D3DCLEAR_ZBUFFER, // 深度バッファ(Zバッファ)を指定
D3DCOLOR_XRGB(0, 0, 255), // クリアする色
1.0f, // クリアする深度バッファ(Zバッファ)の値
0 ) ) ) { // クリアするステンシルバッファの値
return;
}
// 描画開始宣言
if (SUCCEEDED(pD3DDevice_->BeginScene())) {
// モデルなどの描画
pScene1->draw(pD3DDevice_);
// モデルなどの描画
pScene2->draw(pD3DDevice_);
// 描画終了宣言
pD3DDevice_->EndScene();
}
// 描画結果の転送
if (FAILED(pD3DDevice_->Present(0, 0, 0, 0))) {
// デバイス消失から復帰
pD3DDevice_->Reset(&d3DPP_);
}
}
// 呼び出すとき
Task task[2];
renderScene2( &task[ 0 ], &task[ 1 ]);
ということで、以下のようにポインタの配列を引数に渡すようにしたのですが、呼び出すときにどう書いたらいいのかが分かりません
書き方が分かる方、ご教授願えませんでしょうか?(NUMOFOBJECTは0を超える任意の整数と考えてください)
void Renderer::renderObject( Task *pTask[ NUMOFOBJECT ] ){
// NULLチェック
for ( int i = 0; i < NUMOFOBJECT; ++i ) {
if ( pTask[ i ] == 0){
return;
}
}
// ビューポートと深度バッファ(バックバッファ)のクリアとステンシルバッファの削除
if (FAILED(pD3DDevice_->Clear( 0, NULL, // クリアする領域は全面
D3DCLEAR_STENCIL | // ステンシルバッファをクリア
D3DCLEAR_TARGET | // バックバッファを指定
D3DCLEAR_ZBUFFER, // 深度バッファ(Zバッファ)を指定
D3DCOLOR_XRGB( 0, 0, 255 ), // クリアする色
1.0f, // クリアする深度バッファ(Zバッファ)の値
0 ) ) ) { // クリアするステンシルバッファの値
return;
}
// 描画開始宣言
if ( SUCCEEDED( pD3DDevice_->BeginScene( ) ) ) {
// モデルなどの描画
for (int i = 0; i < NUMOFOBJECT; ++i) {
pTask[i]->draw( pD3DDevice_ );
}
// 描画終了宣言
pD3DDevice_->EndScene();
}
// 描画結果の転送
if (FAILED(pD3DDevice_->Present(0, 0, 0, 0))) {
// デバイス消失から復帰
pD3DDevice_->Reset(&d3DPP_);
}
}