1 /*---------------------------------------------------------------------------* 2 Project: Horizon 3 File: gr_RenderState.h 4 5 Copyright (C)2010 Nintendo Co., Ltd. All rights reserved. 6 7 These coded instructions, statements, and computer programs contain 8 proprietary information of Nintendo of America Inc. and/or Nintendo 9 Company Ltd., and are protected by Federal copyright law. They may 10 not be disclosed to third parties or copied or duplicated in any form, 11 in whole or in part, without the prior written consent of Nintendo. 12 13 $Rev: 37389 $ 14 *---------------------------------------------------------------------------*/ 15 16 #ifndef NN_GR_RENDER_STATE_H_ 17 #define NN_GR_RENDER_STATE_H_ 18 19 #include <nn/gr/CTR/gr_Prefix.h> 20 21 namespace nn 22 { 23 namespace gr 24 { 25 namespace CTR 26 { 27 28 /*! 29 @brief レンダーステート設定のためのクラスです。 30 */ 31 class RenderState 32 { 33 public : 34 /*! 35 @brief カラーマスク設定のための定義です。 36 */ 37 enum ColorMask 38 { 39 //! 赤成分を表します。 40 COLOR_MASK_R = 1 << 0, 41 //! 緑成分を表します。 42 COLOR_MASK_G = 1 << 1, 43 //! 青成分を表します。 44 COLOR_MASK_B = 1 << 2, 45 //! アルファ成分を表します。 46 COLOR_MASK_A = 1 << 3, 47 //! すべての成分を表します。 48 COLOR_MASK_RGBA = COLOR_MASK_R | COLOR_MASK_G | COLOR_MASK_B | COLOR_MASK_A 49 }; 50 51 /*! 52 @brief アルファテスト設定のためのクラスです。 53 */ 54 /* 55 各値を設定し、 MakeCommand()を呼ぶことで、描画コマンドを生成することができます。 56 */ 57 class AlphaTest 58 { 59 public : 60 /*! 61 @brief アルファテストの有効/無効の設定です。 62 型は bool です。 63 無効化されている場合は、必ずパスします。 64 初期値はfalse(無効)です。 65 */ 66 bool isEnable; 67 68 /*! 69 @brief アルファテストで参照する定数を設定します。 70 型は u8 です。 71 ユニフォーム値[0.f, 1.f]を[0, 255]の8ビットの整数にマップした値を設定します。 72 初期値は0です。 73 */ 74 u8 refValue; 75 76 /*! 77 @brief アルファテストで使用される比較方法を設定します。 78 型は @ref PicaDataAlphaTest です。 79 初期値は、PICA_DATA_ALPHA_TEST_ALWAYSです。 80 */ 81 PicaDataAlphaTest func; 82 83 NN_PADDING1; 84 85 public : 86 /*! 87 @brief アルファテスト設定の初期値で初期化します。 88 89 @param[in] renderState_ レンダーステートです。 90 */ 91 explicit AlphaTest( const RenderState& renderState_ ); 92 93 /*! 94 @brief 設定された情報をもとに、描画コマンドを生成します。 95 96 @param[in] command 描画コマンドの書き込み先の先頭アドレスです。 97 @param[in] isUpdateFBAccess フレームバッファアクセスを更新します 98 99 @return 書き込まれた描画コマンドの終端の次のアドレスを返します。 100 */ 101 bit32* MakeCommand( bit32* command, bool isUpdateFBAccess = true ) const; 102 103 104 /*! 105 @brief 無効化するコマンドを生成します。 106 107 @param[in] command 描画コマンドの書き込み先の先頭アドレスです。 108 @param[in] isClearFrameBufferCache フレームバッファのキャッシュフラッシュを行います。 109 110 @return 書き込まれた描画コマンドの終端の次のアドレスを返します。 111 */ 112 static bit32* MakeDisableCommand( bit32* command, bool isClearFrameBufferCache = true ); 113 114 protected: 115 const RenderState& m_RenderState; 116 }; 117 118 /*! 119 @brief ブレンド設定のためのクラスです。 120 各値を設定し、 MakeCommand()を呼ぶことで、描画コマンドを生成することができます。 121 レジスタを共有しているため、論理演算設定と同時に使用することはできません。 122 */ 123 class Blend 124 { 125 public : 126 /*! 127 @brief ブレンドの有効/無効の設定です。 128 型は bool です。初期値はfalse(無効)です。 129 論理演算とブレンドはどちらかしか有効にできないです。 130 */ 131 bool isEnable; 132 133 /*! 134 @brief RGB成分のブレンド方程式の設定です。型は @ref PicaDataBlendEquation です。 135 初期値は PICA_DATA_BLEND_EQUATION_ADD です。 136 */ 137 PicaDataBlendEquation eqRgb; 138 139 140 /*! 141 @brief アルファ成分のブレンド関数の設定です。型は @ref PicaDataBlendEquation です。 142 初期値はPICA_DATA_BLEND_EQUATION_ADDです。 143 */ 144 PicaDataBlendEquation eqAlpha; 145 146 /*! 147 @brief ブレンドのRGB成分のソースの設定です。 148 型は @ref PicaDataBlendFunc です。 149 初期値はPICA_DATA_BLEND_FUNC_SRC_ALPHAです。 150 */ 151 PicaDataBlendFunc srcRgb; 152 153 /*! 154 @brief ブレンドの Alpha 成分のソースの設定です。 155 型は @ref PicaDataBlendFunc です。 156 初期値は PICA_DATA_BLEND_FUNC_SRC_ALPHA です。 157 */ 158 PicaDataBlendFunc srcAlpha; 159 160 161 /*! 162 @brief ブレンドのRGB成分のデスティネーションの設定です。 163 型は @ref PicaDataBlendFunc です。 164 初期値は PICA_DATA_BLEND_FUNC_ONE_MINUS_SRC_ALPHA です。 165 */ 166 PicaDataBlendFunc dstRgb; 167 168 /*! 169 @brief ブレンドのALPHA成分のデスティネーションの設定です。 170 型は @ref PicaDataBlendFunc です。 171 初期値は PICA_DATA_BLEND_FUNC_ONE_MINUS_SRC_ALPHA です。 172 */ 173 PicaDataBlendFunc dstAlpha; 174 175 176 /*! 177 @brief ブレンドのコンスタントカラーの赤成分の設定です。 178 型は u8 です。 179 [0,255]の範囲で指定します。初期値は255です。 180 */ 181 u8 colorR; 182 183 184 /*! 185 @brief ブレンドのコンスタントカラーの緑成分の設定です。 186 型は u8 です。 187 [0,255]の範囲で指定します。初期値は255です。 188 */ 189 u8 colorG; 190 191 192 /*! 193 @brief ブレンドのコンスタントカラーの青成分の設定です。 194 型は u8 です。 195 [0,255]の範囲で指定します。初期値は255です。 196 */ 197 u8 colorB; 198 199 200 /*! 201 @brief ブレンドのコンスタントカラーのアルファ成分の設定です。 202 型は u8 です。[0,255]の範囲で指定します。初期値は255です。 203 */ 204 u8 colorA; 205 206 NN_PADDING1; 207 208 public : 209 /*! 210 @brief ブレンド設定の初期値で初期化します。 211 212 @param[in] renderState_ レンダーステートです。 213 */ 214 explicit Blend( const RenderState& renderState_ ); 215 216 217 /*! 218 @brief 設定された情報をもとに、描画コマンドを生成します。 219 220 @param[in] command 描画コマンドの書き込み先の先頭アドレスです。 221 @param[in] isUpdateFBAccess フレームバッファアクセスを更新します。 222 223 @return 書き込まれた描画コマンドの終端の次のアドレスを返します。 224 */ 225 bit32* MakeCommand( bit32* command, bool isUpdateFBAccess = true ) const; 226 227 /*! 228 @brief ブレンドを無効化します。 229 230 @param[in] command 描画コマンドの書き込み先の先頭アドレスです。 231 @param[in] isClearFrameBufferCache フレームバッファのキャッシュフラッシュを行います。 232 233 @return 書き込まれた描画コマンドの終端の次のアドレスを返します。 234 */ 235 static bit32* MakeDisableCommand( bit32* command, bool isClearFrameBufferCache = true ); 236 237 protected: 238 const RenderState& m_RenderState; 239 240 }; 241 242 /*! 243 @brief 論理演算設定のためのクラスです。 244 各値を設定し、 MakeCommand()を呼ぶことで、描画コマンドを生成することができます。 245 レジスタを共有しているため、ブレンド設定と同時に使用することはできません。 246 */ 247 class LogicOp 248 { 249 public : 250 /*! 251 @brief 論理演算の有効/無効の設定です。型は bool です。初期値はfalse(無効)です。 252 論理演算とブレンドはどちらかしか有効にできないです。 253 */ 254 bool isEnable; 255 256 /*! 257 @brief 論理演算の設定です。 258 型は @ref PicaDataLogicOp です。 259 初期値は PICA_DATA_LOGIC_NOOPです。 260 */ 261 PicaDataLogicOp opCode; 262 263 NN_PADDING2; 264 265 public : 266 /*! 267 @brief 論理演算設定の初期値で初期化します。 268 269 @param[in] renderState_ レンダーステートです。 270 */ 271 explicit LogicOp( const RenderState& renderState_ ); 272 273 /*! 274 @brief 設定された情報をもとに、描画コマンドを生成します。 275 276 @param[in] command 描画コマンドの書き込み先の先頭アドレスです。 277 @param[in] isUpdateFBAccess フレームバッファアクセスを更新します 278 279 @return 書き込まれた描画コマンドの終端の次のアドレスを返します。 280 */ 281 bit32* MakeCommand( bit32* command, bool isUpdateFBAccess = true ) const; 282 283 protected: 284 const RenderState& m_RenderState; 285 }; 286 287 /*! 288 @brief ステンシルテスト設定のためのクラスです。 289 */ 290 class StencilTest 291 { 292 public : 293 /*! 294 @brief ステンシルテストの有効/無効の設定です。無効化されている場合は、必ずパスします。初期値はfalse(無効)です。 295 */ 296 bool isEnable; 297 298 /*! 299 @brief ステンシルバッファへのマスクの設定です。 300 型は bit8 です。初期値は 0xff です。glStencilMask( mask ) に相当します。 301 302 */ 303 bit8 maskOp; 304 NN_PADDING2; 305 306 /*! 307 @brief ステンシルテストに使用される比較関数の設定です。 308 型は @ref PicaDataStencilTest です。 309 初期値は、PICA_DATA_STENCIL_TEST_ALWAYSです。 310 glStencilFunc( func, ref, mask ) の ref に相当します。 311 */ 312 PicaDataStencilTest func; 313 NN_PADDING3; 314 315 316 /*! 317 @brief ステンシルテストに使用される参照値の設定です。 318 型は bit32 です。初期値は、0です。 319 */ 320 bit32 ref; 321 322 323 /*! 324 @brief ステンシルテストに使用されるマスク値の設定です。 325 型は bit32 です。初期値は、0xffです。 326 glStencilFunc( func, ref, mask ) の mask に相当します。 327 */ 328 /* 329 ステンシルバッファの値をstencilとすると、 330 ( stencil & mask )と( ref & mask )との間で比較がおこなわれます。 331 */ 332 bit32 mask; 333 334 335 /*! 336 @brief ステンシルテストがフェイルした場合に適用する、 337 ステンシルバッファの値の操作を設定します。 338 型は @ref PicaDataStencilOp です。 339 初期値は、PICA_DATA_STENCIL_OP_KEEPです。 340 glStencilFunc( func, ref, mask ) の func に相当します。 341 */ 342 PicaDataStencilOp opFail; 343 344 345 /*! 346 @brief ステンシルテストにパスし、 347 デプステストにフェイルした場合に適用する、 348 ステンシルバッファの値の操作を設定します。 349 型は @ref PicaDataStencilOp です。 350 初期値は、PICA_DATA_STENCIL_OP_KEEPです。 351 */ 352 PicaDataStencilOp opZFail; 353 354 355 /*! 356 @brief ステンシルテストとデプステストの両方にパスした場合に適用する、 357 ステンシルバッファの値の操作を設定します。 358 型は @ref PicaDataStencilOp です。 359 初期値は、PICA_DATA_STENCIL_OP_KEEPです。 360 */ 361 PicaDataStencilOp opZPass; 362 363 NN_PADDING1; 364 365 public : 366 /*! 367 @brief ステンシルテスト設定の初期値で初期化します。 368 369 @param[in] renderState_ レンダーステートです。 370 */ 371 explicit StencilTest( const RenderState& renderState_ ); 372 373 /*! 374 @brief 設定された情報をもとに、描画コマンドを生成します。 375 376 @param[in] command 描画コマンドの書き込み先の先頭アドレスです。 377 @param[in] isUpdateFBAccess フレームバッファアクセスを更新します 378 379 @return 書き込まれた描画コマンドの終端の次のアドレスを返します。 380 */ 381 bit32* MakeCommand( bit32* command, bool isUpdateFBAccess = true ) const; 382 383 /*! 384 @brief ステンシルテストを無効化するコマンドを生成します。 385 386 @param[in] command 描画コマンドの書き込み先の先頭アドレスです。 387 @param[in] isClearFrameBufferCache フレームバッファのキャッシュフラッシュを行います。 388 389 @return 書き込まれた描画コマンドの終端の次のアドレスを返します。 390 */ 391 static bit32* MakeDisableCommand( bit32* command, bool isClearFrameBufferCache = true ); 392 393 protected: 394 const RenderState& m_RenderState; 395 }; 396 397 /*! 398 @brief デプステスト設定のためのクラスです。 399 */ 400 class DepthTest 401 { 402 public : 403 /*! 404 @brief デプステストの有効/無効の設定です。 405 型は bool です。 406 無効化されている場合は、必ずパスします。 407 初期値はtrue(有効)です。 408 */ 409 bool isEnable; 410 411 412 /*! 413 @brief デプスバッファへの書き込みの有効/無効の設定です。 414 型は bool です。 415 初期値はtrue(有効)です。 416 */ 417 bool isEnableWrite; 418 419 /*! 420 @brief デプステストに使用される比較関数の設定です。 421 型は @ref PicaDataDepthTest です。 422 初期値は PICA_DATA_DEPTH_TEST_LESS です。 423 */ 424 PicaDataDepthTest func; 425 426 NN_PADDING1; 427 428 public : 429 /*! 430 @brief デプステスト設定の初期値で初期化します。 431 432 @param[in] renderState_ レンダーステートです。 433 */ 434 explicit DepthTest( const RenderState& renderState_ ); 435 436 437 /*! 438 @brief 設定された情報をもとに、描画コマンドを生成します。 439 生成される描画コマンドの中には、カラーマスクの設定も含まれますので、 440 注意してください。 441 442 @param[in] command 描画コマンドの書き込み先の先頭アドレスです。型は bit32* です。 443 @param[in] isUpdateFBAccess フレームバッファアクセスを更新します。型は bool です。 444 445 @return 書き込まれた描画コマンドの終端の次のアドレスを返します。 446 */ 447 bit32* MakeCommand( bit32* command, bool isUpdateFBAccess = true ) const; 448 449 /*! 450 @brief デプステストを無効化します。 451 またカラーマスクは全て true に設定しますので、注意してください。 452 453 @param[in] command 描画コマンドの書き込み先の先頭アドレスです。型は bit32* です。 454 @param[in] isClearFrameBufferCache フレームバッファのキャッシュフラッシュを行います。 455 456 @return 書き込まれた描画コマンドの終端の次のアドレスを返します。 457 */ 458 static bit32* MakeDisableCommand( bit32* command, bool isClearFrameBufferCache = true ); 459 460 protected: 461 const RenderState& m_RenderState; 462 }; 463 464 /*! 465 @brief wバッファ設定のためのクラスです。 466 */ 467 class WBuffer 468 { 469 public : 470 471 /*! 472 @brief wバッファ有効時のスケール値です。型は f32 です。 473 wScaleが0のとき、wバッファは無効になります。初期値は0です。 474 */ 475 f32 wScale; 476 477 /*! 478 @brief ポリゴンオフセットの有効/無効の設定です。型は bool です。 479 一応、wバッファと同時に使用することができます。 480 */ 481 bool isEnablePolygonOffset; 482 483 NN_PADDING3; 484 485 /*! 486 @brief デプス値の分解可能最小値に対するスケール値の設定です。 487 型は f32 です。 488 デプス値の分解可能最小値は、デプスバッファのビット値に依存します。 489 初期値は0です。 490 wバッファが有効でかつデプスバッファが 24 bit のとき、 491 精度誤差で消えてしまうの防ぐために 492 ポリゴンオフセットに定数値をかけています。 493 494 @see depthRangeBit; 495 */ 496 497 f32 polygonOffsetUnit; 498 499 /*! 500 @brief クリップ空間におけるNear平面のdepth値の設定です。 501 型は f32 です。 502 初期値は0です。 503 0 <= depthRangeNear <= depthRangeFar <= 1となるように設定します。 504 wバッファを有効にしている場合は設定を無視して0が設定されます。 505 */ 506 f32 depthRangeNear; 507 508 /*! 509 @brief クリップ空間におけるFar平面のdepth値の設定です。 510 型は f32 です。 511 初期値は1です。 512 0 <= depthRangeNear <= depthRangeFar <= 1となるように設定します。 513 wバッファを有効にしている場合は設定を無視して1が設定されます。 514 */ 515 f32 depthRangeFar; 516 517 /*! 518 @brief デブスバッファのビット値を指定します。 519 型は f32 です。 520 初期値は24です。 521 */ 522 u8 depthRangeBit; 523 524 NN_PADDING3; 525 526 public : 527 /*! 528 @brief wバッファ設定の初期値で初期化します。 529 530 @param[in] renderState_ レンダーステートです。 531 */ 532 explicit WBuffer( const RenderState& renderState_ ); 533 534 /*! 535 @brief 設定された情報をもとに、描画コマンドを生成します。 536 537 @param[in] command 描画コマンドの書き込み先の先頭アドレスです。 538 @param[in] isUpdateFBAccess フレームバッファアクセスを更新します。 539 540 @return 書き込まれた描画コマンドの終端の次のアドレスを返します。 541 */ 542 bit32* MakeCommand( bit32* command, bool isUpdateFBAccess = true ) const; 543 544 protected: 545 const RenderState& m_RenderState; 546 }; 547 548 /*! 549 @brief カリング設定のためのクラスです。 550 */ 551 class Culling 552 { 553 public : 554 /*! 555 @brief カリングの有効/無効の設定です。 556 型は bool です。 557 無効化されている場合は、両面ポリゴンが描画されます。 558 初期値はtrue(有効)です。 559 */ 560 bool isEnable; 561 562 /*! 563 @brief ポリゴン面の表の向きをあらわします。 564 */ 565 enum FrontFace 566 { 567 /*! 568 @brief 頂点が時計回りに配置されている場合を表とします。 569 */ 570 FRONT_FACE_CW , 571 572 /*! 573 @brief 頂点が反時計回りに配置されている場合を表とします。 574 */ 575 FRONT_FACE_CCW 576 }; 577 578 /*! 579 @brief ポリゴン面の表の向きを設定します。 580 型は nn:gr::CTR::RenderState::Culling::FrontFace です。 581 初期値は FRONT_FACE_CCW(反時計回り)です。 582 */ 583 FrontFace frontFace; 584 585 /*! 586 @brief カリングするポリゴン面をあらわします。 587 */ 588 enum CullFace 589 { 590 /*! 591 @brief 表面をカリングします。 592 */ 593 CULL_FACE_FRONT, 594 /*! 595 @brief 裏面をカリングします。 596 */ 597 CULL_FACE_BACK 598 }; 599 600 /*! 601 @brief カリングするポリゴン面を設定します。 602 型は nn:gr::CTR::RenderState::Culling::CullFace です。 603 初期値は CULL_FACE_BACK です。 604 */ 605 CullFace cullFace; 606 607 NN_PADDING1; 608 609 public : 610 /*! 611 @brief カリング設定の初期値で初期化します。 612 613 @param[in] renderState_ レンダーステートです。 614 */ 615 explicit Culling( const RenderState& renderState_ ); 616 617 618 /*! 619 @brief 設定された情報をもとに、描画コマンドを生成します。 620 621 @param[in] command 描画コマンドの書き込み先の先頭アドレスです。 622 @param[in] isUpdateFBAccess フレームバッファアクセスを更新します 623 @return 書き込まれた描画コマンドの終端の次のアドレスを返します。 624 */ 625 bit32* MakeCommand( bit32* command, bool isUpdateFBAccess = true ) const; 626 627 /*! 628 @brief カリングを無効化します。 629 630 @param[in] command 描画コマンドの書き込み先の先頭アドレスです。 631 @param[in] isClearFrameBufferCache フレームバッファのキャッシュフラッシュを行います。 632 633 @return 書き込まれた描画コマンドの終端の次のアドレスを返します。 634 */ 635 static bit32* MakeDisableCommand( bit32* command, bool isClearFrameBufferCache = true ); 636 637 protected: 638 const RenderState& m_RenderState; 639 }; 640 641 /*! 642 @brief フレームバッファアクセスの設定のためのクラスです。 643 */ 644 /* 645 フレームバッファアクセスの設定は、カラーマスク、ブレンド、論理演算、デプステスト、ステンシルテストの設定 646 に依存するので、コンストラクタで参照を指定します。 647 上記の設定を変えるコマンドを生成した後で、 648 フレームバッファアクセスに変更が生じる場合は、 649 FBAccess::MakeCommand()によりコマンドを生成する必要があります。 650 */ 651 class FBAccess 652 { 653 public : 654 /*! 655 @brief フレームバッファアクセスの設定は、カラーマスク、ブレンド、論理演算、デプステスト、ステンシルテストの設定 656 に依存するので、コンストラクタで参照を指定します。 657 658 @param[in] renderState_ レンダーステートです。 659 */ 660 explicit FBAccess( const RenderState& renderState_ ); 661 662 /*! 663 @brief 各種の設定された情報をもとに、描画コマンドを生成します。 664 665 @param[in] command 描画コマンドの書き込み先の先頭アドレスです。 666 @param[in] isClearFrameBufferCache フレームバッファのキャッシュフラッシュを行います。 667 668 @return 書き込まれた描画コマンドの終端の次のアドレスを返します。 669 */ 670 bit32* MakeCommand( bit32* command, bool isClearFrameBufferCache = true ) const; 671 672 /*! 673 @brief 無効化するコマンドを生成します. 674 675 @param[in] command 描画コマンドの書き込み先の先頭アドレスです。 676 @param[in] isClearFrameBufferCache フレームバッファのキャッシュフラッシュを行います。 677 678 @return 書き込まれた描画コマンドの終端の次のアドレスを返します。 679 */ 680 static bit32* MakeDisableCommand( bit32* command, bool isClearFrameBufferCache = true ); 681 682 /*! 683 @brief フレームバッファのキャッシュフラッシュをするコマンドを生成します. 684 685 @param[in] command 描画コマンドの書き込み先の先頭アドレスです。 686 687 @return 書き込まれた描画コマンドの終端の次のアドレスを返します。 688 */ 689 static bit32* MakeClearCacheCommand( bit32* command ); 690 691 protected: 692 const RenderState& m_RenderState; 693 }; 694 695 public : 696 /*! 697 @brief ブレンド設定です。 698 型は nn::gr::CTR::RenderState::Blend です。 699 論理演算とブレンドはどちらかしか有効にできないです。 700 また有効にした場合、シャドウマップへの描画やガス密度情報描画と同時に使うことはできません。 701 */ 702 Blend blend; 703 704 /*! 705 @brief 論理演算設定です。 706 型は nn::gr::CTR::RenderState::LogicOp です。 707 論理演算とブレンドはどちらかしか有効にできないです。 708 また有効にした場合、シャドウマップへの描画やガス密度情報描画と同時に使うことはできません。 709 */ 710 LogicOp logicOp; 711 712 /*! 713 @brief アルファテスト設定です。 714 型は nn::gr::CTR::RenderState::AlphaTest です。 715 */ 716 AlphaTest alphaTest; 717 718 /*! 719 @brief ステンシルテスト設定です。 720 型は nn::gr::CTR::RenderState::StencilTest です。 721 */ 722 StencilTest stencilTest; 723 724 /*! 725 @brief カラーマスク設定です。 726 型は nn::gr::CTR::RenderState::ColorMask です。 727 */ 728 ColorMask colorMask; 729 NN_PADDING3; 730 731 /*! 732 @brief デプステスト設定です。 733 型は nn::gr::CTR::RenderState::DepthTest です。 734 735 @ref RenderState::DepthTest 736 */ 737 DepthTest depthTest; 738 739 /*! 740 @brief カリング設定です。 741 型は nn::gr::CTR::RenderState::Culling です。 742 743 @ref RenderState::Culling 744 */ 745 Culling cullingTest; 746 747 /*! 748 @brief wバッファ設定です。 749 型は nn::gr::CTR::RenderState::WBuffer です。 750 751 @ref RenderState::WBuffer 752 */ 753 WBuffer wBuffer; 754 755 /*! 756 @brief フレームバッファアクセス設定です。 757 型は nn::gr::CTR::RenderState::FBAccess です。 758 759 */ 760 FBAccess fbAccess; 761 762 public : 763 /*! 764 @brief レンダーステートの各々の設定を、初期値で初期化します。 765 766 @see RenderState::Culling、 767 RenderState::Blend、 768 RenderState::LogicOp、 769 RenderState::AlphaTest、 770 RenderState::StencilTest、 771 RenderState::DepthTest、 772 RenderState::WBuffer、 773 RenderState::FBAccess 774 */ 775 explicit RenderState(); 776 777 /*! 778 @brief 設定された情報をもとに、すべてのレンダーステートの設定コマンドを生成します。 779 780 @param[in] command 描画コマンドの書き込み先の先頭アドレスです。 781 @param[in] isClearFrameBufferCache フレームバッファのキャッシュフラッシュを行います。 782 783 @return 書き込まれた描画コマンドの終端の次のアドレスを返します。 784 785 @see RenderState::Culling::MakeCommand()、 786 RenderState::Blend::MakeCommand()、 787 RenderState::LogicOp::MakeCommand()、 788 RenderState::AlphaTest::MakeCommand()、 789 RenderState::StencilTest::MakeCommand()、 790 RenderState::DepthTest::MakeCommand()、 791 RenderState::WBuffer::MakeCommand()、 792 RenderState::FBAccess::MakeCommand() 793 */ 794 bit32* MakeCommand( bit32* command, bool isClearFrameBufferCache = true ) const; 795 796 /*! 797 @brief レンダーステートを無効化するコマンドを生成します。 798 799 @param[in] command 描画コマンドの書き込み先の先頭アドレスです。 800 @param[in] isClearFrameBufferCache フレームバッファのキャッシュフラッシュを行います。 801 802 @return 書き込まれた描画コマンドの終端の次のアドレスを返します。 803 */ 804 static bit32* MakeDisableCommand( bit32* command, bool isClearFrameBufferCache = true ); 805 }; 806 807 } // namespace CTR 808 } // namespace gr 809 } // namespace nn 810 811 #endif // NN_GR_RENDER_STATE_H_ 812