9. 付録

9.1. イミディエート関数一覧

イミディエート関数の一覧を以下に示します。

表 9-1. イミディエート関数一覧
クラス 関数
nn::gd::CombinerStage SetTextureCombinerUnitConstantColor()
nn::gd::FogStage UploadFogLookUpTableFloat()
UploadFogLookUpTableNative()
UploadGasLookUpTableFloat()
UploadGasLookUpTableNative()
nn::gd::LightingStage SetGlobalColorAmbient()
UploadLookUpTableFloat()
UploadLookUpTableNative()
nn::gd::Light SetColorAmbient()
SetColorDiffuse()
SetColorSpecular0()
SetColorSpecular1()
SetPosition()
SetDirection()
SetSpotDirection()
SetLightType()
SetDistanceAttenuationScaleBias()
EnableTwoSideDiffuse()
EnableGeomFactor0()
EnableGeomFactor1()
UploadLookUpTableFloat()
UploadLookUpTableNative()
nn::gd::ProceduralTextureStage UploadLookUpTableRgbMapFloat()
UploadLookUpTableRgbMapNative()
UploadLookUpTableAlphaMapFloat()
UploadLookUpTableAlphaMapNative()
UploadLookUpTableNoiseMapFloat()
UploadLookUpTableNoiseMapNative()
UploadLookUpTableColorMapFloat()
UploadLookUpTableColorMapNative()
nn::gd::ShaderStage SetFloatConstantBuffer()
nn::gd::OutputStage SetPenumbraScaleBias()
nn::gd::RasterizerStage SetCulling()
SetViewport()
EnableClippingPlane()
SetClippingPlane()
EnableScissor()
SetScissor()

9.2. 関数内で確保されるメモリのサイズ

下記のサイズは GX ライブラリの初期化時に指定したアロケータへ渡される値です。

備考欄に記載されていない限り、用途は NN_GX_MEM_SYSTEM、メモリの指定は NN_GX_MEM_FCRAM です。

表 9-2. 関数内で確保されるメモリ
関数 サイズ 備考
System::Initialize() 24 Byte 管理情報
12 Byte 管理情報
12 Byte 管理情報
28 Byte 管理情報
12 Byte 管理情報
1536 Byte 管理情報
52 Byte 管理情報
28 Byte 管理情報
12 Byte 管理情報
1664 Byte 管理情報
56 Byte 管理情報
28 Byte 管理情報
12 Byte 管理情報
2688 Byte 管理情報
28 Byte 管理情報
12 Byte 管理情報
14208 Byte 管理情報
616 Byte 管理情報
28 Byte 管理情報
12 Byte 管理情報
1664 Byte 管理情報
60 Byte 管理情報
28 Byte 管理情報
12 Byte 管理情報
640 Byte 管理情報
328 Byte 3D コマンド
(ジオメトリシェーダを使用する設定に共用プロセッサを変更する)
328 Byte 3D コマンド
(ジオメトリシェーダを使用しない設定に共用プロセッサを変更する)
Resource::CreateTexture2DResource() 52 Byte 管理情報
16 Byte 管理情報
データによる 初期データあり、かつコピーなしでなければ、指定されたメモリに NN_GX_MEM_TEXTURE で確保されます
Resource::
CreateTexture2DResourceCastFrom()
64 Byte 管理情報
Resource::Helper::
ConvertTextureResourceToNativeFormat()
データによる 変換で使用する一時的なバッファのため、関数の終了時に解放されます
Resource::Helper::ConvertCompressed
TextureResourceToNativeFormat()
データによる 変換で使用する一時的なバッファのため、関数の終了時に解放されます
Resource::CreateRenderTarget() 48 Byte 管理情報
Resource::CreateDepthStecilTarget() 52 Byte 管理情報
TextureStage::CreateTexture2D() 64 Byte 管理情報
TextureStage::CreateTextureCube() 112 Byte 管理情報
ShaderStage::CreateShaderBinary() 28 Byte 管理情報
データによる 管理情報
データによる 管理情報
データによる 管理情報
データによる 管理情報
データによる 管理情報
データによる 管理情報
20 Byte 管理情報
データによる 3D コマンド
データによる 3D コマンド
ShaderStage::CreateShader() 20 Byte 管理情報
データによる 3D コマンド
ShaderStage::CreateShaderPipeline() 148 Byte 管理情報
データによる 3D コマンド
データによる ユニフォーム設定の値
(頂点シェーダ)
データによる ユニフォーム設定の値
(ジオメトリシェーダ)
VertexInputStage::CreateInputLayout() 204 Byte 管理情報
データによる InputElementDescription クラス(複数の場合あり)
Resource::CreateVertexBufferResource() 24 Byte 管理情報
データによる 初期データあり、かつコピーなしでなければ、指定されたメモリに NN_GX_MEM_VERTEXBUFFER で確保されます
CombinerStage::
CreateTextureCombinerState()
616 Byte 管理情報
92 Byte 管理情報
TextureStage::CreateSamplerState() 60 Byte 管理情報
OutputStage::CreateDepthStecilState() 52 Byte 管理情報
OutputStage::CreateBlendState() 56 Byte 管理情報
System::StartRecordingPackets() 36 Byte 管理情報
System::StopRecordingPackets() データによる 記録された 3D コマンド

9.3. デバッグサポート機能

GD ライブラリでは、描画時の動作を変更するフィルタ機能など、デバッグに便利な機能を用意しています。

9.3.1. フィルタ機能

フィルタ機能では、フラグ指定で描画時の動作を変更することができます。フィルタ機能は、Debug または Development でコンパイルされたときのみ有効です。

コード 9-1. フィルタ機能の指定関数
static nnResult nn::gd::System::Debug::SetFilter(
                u32 filterFlag, u32 drawStartIndex, s32 drawCount);

drawStartIndex で指定された回数の描画が行われたあと、drawCount で指定された回数の描画が行われるまでフィルタ機能が有効になります。

filterFlag には、以下のフラグから有効にする機能を論理和で指定します。

表 9-3. フィルタ機能のフラグ
フラグ 説明
FILTER_NONE 単独で指定するとフィルタ機能が無効になります。
FILTER_TEXTURE_8X8 描画に使用するテクスチャすべてを固定の 8x8 テクスチャに変更します。
FILTER_TEXTURE_CUSTOM 描画に使用するテクスチャすべてを SetCustomTexture() で指定されたカスタムテクスチャに変更します。カスタムテクスチャが指定されていない場合は、固定の 8×8 テクスチャが使用されます。
FILTER_SAMPLER_STATE_FILTER_
NEAREST_MIPMAP_NEAREST
テクスチャの縮小時フィルタの設定を、強制的に GL_NEAREST_MIPMAP_NEAREST に設定します。
FILTER_SAMPLER_STATE_FILTER_
LINEAR_MIPMAP_NEAREST
テクスチャの縮小時フィルタの設定を、強制的に GL_LINEAR_MIPMAP_NEAREST に設定します。
FILTER_VIEWPORT_1X1 ビューポートの設定を 1×1 に変更します。
FILTER_SIMPLE_COMBINER コンバイナの設定を変更し、すべてのピクセルが緑で出力されます。
FILTER_DISABLE_BLENDING ブレンディングを無効にします。
FILTER_DISABLE_DEPTH_STENCIL_TEST デプス、ステンシルのテストを無効にします。
FILTER_DISABLE_ALPHA_TEST アルファテストを無効にします。
FILTER_LIGHTING_STAGE_1_LIGHT_MAX ライティングの最大数を 1 に変更します。複数のライトを有効に設定した場合は、最初に有効となったライトのみが有効になります。
FILTER_LIGHTING_STAGE_SIMPLE_
LAYER_CONFIGURATION
ライティングに必要なサイクル数が最小となるレイヤコンフィグレーションに変更します。
FILTER_DISABLE_DRAW 描画を無効にします。
FILTER_VISUALIZE_OVERDRAW 描画されたピクセルが徐々に白くなるようにブレンディングの設定を追加し、重複して描画が行われるピクセルを視覚化します。デプス、ステンシルを無効にするフィルタを併用することで、テストで破棄される(破棄されない)ピクセルを確認することができます。
FILTER_DISABLE_CULLING カリングを無効に変更します。
FILTER_ENABLE_CULLING_CLOCKWISE カリングを時計回りに変更します。
FILTER_ENABLE_CULLING_COUNTERCLOCKWISE カリングを反時計回りに変更します。

9.3.2. ミップマップレベルの視覚化

nn::gd::System::Debug::ColorizeMipmaps() は、テクスチャリソースを指定されたミップマップレベルごとに指定された色で塗りつぶし、ミップマップレベルの視覚化をサポートします。

コード 9-2. ミップマップレベルの視覚化をサポートする関数
static nnResult nn::gd::System::Debug::ColorizeMipmaps(
                nn::gd::Texture2DResource* texture2DResource, 
                s32 minMipLevelIndex, s32 maxMipLevelIndex, u8 colors[][4]);

minMipLevelIndex maxMipLevelIndex にはそれぞれ、塗りつぶすミップマップレベルの最小のインデックスと最大のインデックスを指定します。どちらの引数も、-1 が指定された場合は texture2DResource で指定されたテクスチャリソースが持つ、最大のミップマップレベルを指定したことになります。

colors で指定されたカラーは、minMipLevelIndex で指定されたミップマップレベルから順に使用されます。つまり、minMipLevelIndex に指定されたミップマップレベルのテクスチャが colors[0] に指定されたカラーで塗りつぶされ、次のミップマップレベルのテクスチャは colors[1] に指定されたカラーで塗りつぶされます。

colors NULL を指定したときは、デフォルトのカラー配列を使用して塗りつぶします。デフォルトのカラー配列については、関数リファレンスを参照してください。