3-8. 描画

この節ではいよいよ描画コマンドを送って実際に描画処理をやります。

早速いわゆるドローコール(描画を行うコマンド)を送ってみたいところですが、まずはレンダーパスの開始と終了を指示するコマンドを送る必要があります。

描画処理である以上はレンダーパスの枠組みの中でやらなければいけないので、その為です。レンダーパスを開始した直後に何らかのコマンドを送ればサブパス0番の中の処理という扱いになってくれます。ここでは3-3. レンダーパスで解説したようにサブパス1個だけのレンダーパスを使っているため、そのままレンダーパスを終えています。なお、複数のサブパスを持つレンダーパスを用いる場合は以下のように nextSubpass というコマンドで次のサブパスへ移行します。(今回は使いませんが)

描画処理ですが、どのパイプラインを使って行うかを示さなければなりません。これは bindPipeline というコマンドで行えます。

こうしてようやく長い長い下準備の果てにようやく描画コマンドを呼ぶ準備が出来ました。これです。

全てはこれをやるための道のりでした!

第1引数は頂点の数、これが3つということは頂点シェーダは3回呼び出され三角形が1つ描かれることを意味します。

第2引数はインスタンスの数です。インスタンスというのは何かというと物体のことで、例えば複数のインスタンスを扱うと同じ格好をした物体が一度に複数まとめて描画できたりします。これは応用的な話なのでここでは何も考えず1を指定します。

第3引数・第4引数は頂点のオフセットとインスタンスのオフセットで、例えば頂点の情報が2000個分あって、前の1000頂点が物体Aのモデルデータを表し後の1000頂点が物体Bのモデルデータを表すといった場合、第3引数に1000を渡して物体Bのモデル描画に使えるとかそういう感じのやつです。ここでは単純に0を指定しています。

では、無事出来上がった三角形を描画するプログラムを実行してみましょう!

何も出ません。

当たり前です。全てはメモリの中の出来事…

空しい…


この節では描画コマンドを呼び出し三角形を描画しました。次回はメモリの中に出来上がった三角形の画像データをファイルに書き出します。

 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です