Main Page | Namespace List | Class Hierarchy | Alphabetical List | Compound List | File List | Namespace Members | Compound Members | File Members

# RenderingDevice.h

Go to the documentation of this file.

    00001 //------------------------------------------------------------------------------
    00002 // Lamp : Open source game middleware
    00003 // Copyright (C) 2004  Junpei Ohtani ( Email : junpee@users.sourceforge.jp )
    00004 //
    00005 // This library is free software; you can redistribute it and/or
    00006 // modify it under the terms of the GNU Lesser General Public
    00007 // License as published by the Free Software Foundation; either
    00008 // version 2.1 of the License, or (at your option) any later version.
    00009 //
    00010 // This library is distributed in the hope that it will be useful,
    00011 // but WITHOUT ANY WARRANTY; without even the implied warranty of
    00012 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    00013 // Lesser General Public License for more details.
    00014 //
    00015 // You should have received a copy of the GNU Lesser General Public
    00016 // License along with this library; if not, write to the Free Software
    00017 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
    00018 //------------------------------------------------------------------------------
    00019
    00020 /** @file
    00021  * レンダリングデバイスヘッダ
    00022  * @author Junpee
    00023  */
    00024
    00025 #ifndef RENDERING_DEVICE_H_
    00026 #define RENDERING_DEVICE_H_
    00027
    00028 namespace Lamp{
    00029
    00030 class GraphicsDeviceCapacity;
    00031 class Fog;
    00032 class DirectionalLight;
    00033 class PointLight;
    00034 class Texture;
    00035
    00036 //------------------------------------------------------------------------------
    00037 /**
    00038  * レンダリングデバイス
    00039  */
    00040 class RenderingDevice{
    00041 friend class LampGraphics;
    00042 public:
    00043     /// 最大アクティブライト数
    00044     static const int maxActiveLightCount_;
    00045
    00046     //--------------------------------------------------------------------------
    00047     /**
    00048      * インスタンス取得
    00049      * @return インスタンス
    00050      */
    00051     static RenderingDevice* getInstance(){
    00052         Assert(instance_ != NULL);
    00053         return instance_;
    00054     }
    00055
    00056     //--------------------------------------------------------------------------
    00057     // ステート設定
    00058     //--------------------------------------------------------------------------
    00059     /**
    00060      * レンダーステートの設定
    00061      * @param type レンダーステートタイプ
    00062      * @param state レンダーステート
    00063      */
    00064     virtual void setRenderState(D3DRENDERSTATETYPE type, u_int state);
    00065
    00066     /**
    00067      * テクスチャステートの設定
    00068      * @param stage ステージ
    00069      * @param type テクスチャステートタイプ
    00070      * @param state テクスチャステート
    00071      */
    00072     virtual void setTextureState(
    00073         u_int stage, D3DTEXTURESTAGESTATETYPE type, u_int state);
    00074
    00075     /**
    00076      * サンプラステートの設定
    00077      * @param stage ステージ
    00078      * @param type サンプラステートタイプ
    00079      * @param state サンプラステート
    00080      */
    00081     virtual void setSamplerState(
    00082         u_int stage, D3DSAMPLERSTATETYPE type, u_int state);
    00083
    00084     //--------------------------------------------------------------------------
    00085     // ステートブロック関連
    00086     //--------------------------------------------------------------------------
    00087     /**
    00088      * ステートブロックの開始
    00089      */
    00090     virtual void beginStateBlock();
    00091
    00092     /**
    00093      * ステートブロックの終了
    00094      * @return ステートブロック
    00095      */
    00096     virtual Direct3DStateBlock* endStateBlock();
    00097
    00098     /**
    00099      * ステートブロックの適用
    00100      * @param stateBlock ステートブロック
    00101      */
    00102     virtual void applyStateBlock(Direct3DStateBlock* stateBlock);
    00103
    00104     /**
    00105      * デフォルトステートブロックの適用
    00106      */
    00107     virtual void applyDefaultStateBlock(){
    00108         applyStateBlock(defaultStateBlock_);
    00109     }
    00110
    00111     //--------------------------------------------------------------------------
    00112     // レンダーターゲット
    00113     //--------------------------------------------------------------------------
    00114     /**
    00115      * レンダーターゲットサイズの取得
    00116      * @return レンダーターゲットサイズ
    00117      */
    00118     virtual DimensionI getRenderTargetSize();
    00119
    00120     //--------------------------------------------------------------------------
    00121     // シーン関連
    00122     //--------------------------------------------------------------------------
    00123     /**
    00124      * シーンの開始
    00125      * @return 成功すればtrueを返す
    00126      */
    00127     virtual bool beginScene();
    00128
    00129     /**
    00130      * シーンの終了
    00131      */
    00132     virtual void endScene();
    00133
    00134     //--------------------------------------------------------------------------
    00135     // 行列関連
    00136     //--------------------------------------------------------------------------
    00137     /**
    00138      * 投影行列の設定
    00139      * @param projectionMatrix 投影行列
    00140      */
    00141     virtual void setProjectionMatrix(const Matrix44& projectionMatrix);
    00142
    00143     /**
    00144      * ビュー行列の設定
    00145      * @param viewMatrix ビュー行列
    00146      */
    00147     virtual void setViewMatrix(const Matrix44& viewMatrix);
    00148
    00149     /**
    00150      * ワールド行列の設定
    00151      * @param worldMatrix ワールド行列
    00152      */
    00153     virtual void setWorldMatrix(const Matrix34& worldMatrix);
    00154
    00155     /**
    00156      * テクスチャトランスフォーム設定
    00157      * @param stage テクスチャステージ
    00158      * @param repeat リピート
    00159      * @param offset オフセット
    00160      */
    00161     virtual void setTextureTransform2(u_int stage,
    00162         const TexCoord2& repeat, const TexCoord2& offset);
    00163
    00164     //--------------------------------------------------------------------------
    00165     // ビューポート
    00166     //--------------------------------------------------------------------------
    00167     /**
    00168      * ビューポートの設定
    00169      * @param rectangle 矩形
    00170      */
    00171     virtual void setViewport(const RectangleI& rectangle);
    00172
    00173     /**
    00174      * ビューポートのリセット
    00175      */
    00176     virtual void resetViewport();
    00177
    00178     //--------------------------------------------------------------------------
    00179     // ライティング関連
    00180     //--------------------------------------------------------------------------
    00181     /**
    00182      * ライティングの設定
    00183      * @param lighting ライティングを行うならtrue
    00184      */
    00185     virtual void setLighting(bool lighting);
    00186
    00187     /**
    00188      * アンビエントカラーの設定
    00189      * @param ambientColor アンビエントカラー
    00190      */
    00191     virtual void setAmbientColor(const Color3f& ambientColor);
    00192
    00193     /**
    00194      * ディレクショナルライトを有効にする
    00195      * @param lightIndex ライトインデックス
    00196      * @param directionalLight ディレクショナルライト
    00197      */
    00198     virtual void enableDirectionalLight(
    00199         int lightIndex, DirectionalLight* directionalLight);
    00200
    00201     /**
    00202      * ポイントライトを有効にする
    00203      * @param lightIndex ライトインデックス
    00204      * @param pointLight ポイントライト
    00205      */
    00206     virtual void enablePointLight(int lightIndex, PointLight* pointLight);
    00207
    00208     /**
    00209      * ライトを閉じる
    00210      * @param lightIndex ライトインデックス
    00211      */
    00212     virtual void closeLight(int lightIndex);
    00213
    00214     //--------------------------------------------------------------------------
    00215     // マテリアル関連
    00216     //--------------------------------------------------------------------------
    00217     /**
    00218      * マテリアルの設定
    00219      * @param diffuseColor ディフューズカラー
    00220      * @param specularColor スペキュラカラー
    00221      * @param ambientColor アンビエントカラー
    00222      * @param emissiveColor エミッシブカラー
    00223      * @param specularPower スペキュラパワー
    00224      * @param alpha アルファ
    00225      */
    00226     virtual void setMaterial(
    00227         const Color3f& diffuseColor, const Color3f& specularColor,
    00228         const Color3f& ambientColor, const Color3f& emissiveColor,
    00229         float specularPower, float alpha);
    00230
    00231     //--------------------------------------------------------------------------
    00232     /**
    00233      * ブレンディングの設定
    00234      * @param blendingFlag ブレンディングフラグ
    00235      */
    00236     virtual void setBlending(bool blendingFlag);
    00237
    00238     /**
    00239      * ブレンドモードの設定
    00240      * @param mode ブレンドモード
    00241      * @param source ブレンドソース
    00242      * @param destination ブレンドデスティネーション
    00243      */
    00244     virtual void setBlendMode(int mode, int source, int destination);
    00245
    00246     //--------------------------------------------------------------------------
    00247     // テクスチャ関連
    00248     //--------------------------------------------------------------------------
    00249     /**
    00250      * テクスチャの設定
    00251      * @param textureStage テクスチャステージ
    00252      * @param texture テクスチャ
    00253      */
    00254     virtual void setTexture(int textureStage, Texture* texture);
    00255
    00256     /**
    00257      * テクスチャの設定
    00258      * @param textureStage テクスチャステージ
    00259      * @param texture Direct3Dテクスチャ
    00260      */
    00261     virtual void setTexture(int textureStage, Direct3DTexture* texture);
    00262
    00263     /**
    00264      * テクスチャアドレスモードの設定
    00265      * @param textureStage テクスチャステージ
    00266      * @param addressModeU アドレスモードU
    00267      * @param addressModeV アドレスモードV
    00268      */
    00269     virtual void setTextureAddressMode2(int textureStage,
    00270         int addressModeU, int addressModeV);
    00271
    00272     /**
    00273      * テクスチャの作成
    00274      * @param format フォーマット
    00275      * @param width 幅
    00276      * @param height 高さ
    00277      * @return テクスチャ
    00278      */
    00279     virtual Direct3DTexture* createTexture(
    00280         D3DFORMAT format, int width, int height);
    00281
    00282     /**
    00283      * テクスチャのロック
    00284      * @param texture テクスチャ
    00285      * @param mipmapLevel ミップマップレベル
    00286      * @return ロックされた矩形
    00287      */
    00288     virtual D3DLOCKED_RECT lockTexture(
    00289         Direct3DTexture* texture, int mipmapLevel);
    00290
    00291     /**
    00292      * テクスチャのアンロック
    00293      * @param texture テクスチャ
    00294      * @param mipmapLevel ミップマップレベル
    00295      */
    00296     virtual void unlockTexture(Direct3DTexture* texture, int mipmapLevel);
    00297
    00298     //--------------------------------------------------------------------------
    00299     // テクスチャステージ関連
    00300     //--------------------------------------------------------------------------
    00301     /**
    00302      * カラーテクスチャステージ設定
    00303      * @param colorStage カラーステージ
    00304      * @param operation ステージの操作
    00305      * @param arg1 第一引数
    00306      * @param arg2 第二引数
    00307      * @param uvIndex UVインデックス
    00308      */
    00309     virtual void setColorTextureStage(int colorStage,
    00310         D3DTEXTUREOP operation, u_int arg1, u_int arg2, int uvIndex);
    00311
    00312     /**
    00313      * カラーテクスチャステージを閉じる
    00314      * @param colorStage カラーステージ
    00315      */
    00316     virtual void closeColorTextureStage(int colorStage);
    00317
    00318     /**
    00319      * アルファテクスチャステージ設定
    00320      * @param alphaTextureStage アルファテクスチャステージ
    00321      */
    00322     virtual void setAlphaTextureStage(int alphaTextureStage);
    00323
    00324     //--------------------------------------------------------------------------
    00325     // フォグ
    00326     //--------------------------------------------------------------------------
    00327     /**
    00328      * フォグの設定
    00329      * @param fog フォグ
    00330      */
    00331     virtual void setFog(Fog* fog);
    00332
    00333     //--------------------------------------------------------------------------
    00334     // Zテスト
    00335     //--------------------------------------------------------------------------
    00336     /**
    00337      * Zテストの設定
    00338      * @param zTest Zテストを行うならtrue
    00339      */
    00340     virtual void setZTest(bool zTest);
    00341
    00342     //--------------------------------------------------------------------------
    00343     // インデックスバッファ
    00344     //--------------------------------------------------------------------------
    00345     /**
    00346      * 静的インデックスバッファの構築
    00347      * @param bufferSize バッファサイズ
    00348      * @return 静的インデックスバッファ
    00349      */
    00350     virtual Direct3DIndexBuffer* createStaticIndexBuffer(int bufferSize);
    00351
    00352     /**
    00353      * 静的インデックスバッファのロック
    00354      * @param indexBuffer インデックスバッファ
    00355      * @param offset オフセット
    00356      * @param size サイズ
    00357      * @return 書き込みアドレス
    00358      */
    00359     virtual u_char* lockStaticIndexBuffer(
    00360         Direct3DIndexBuffer* indexBuffer, int offset, int size);
    00361
    00362     /**
    00363      * 静的インデックスバッファのアンロック
    00364      * @param indexBuffer インデックスバッファ
    00365      */
    00366     virtual void unlockStaticIndexBuffer(Direct3DIndexBuffer* indexBuffer);
    00367
    00368     /**
    00369      * 静的インデックスバッファの書き込み
    00370      * @param indexBuffer インデックスバッファ
    00371      * @param data データ
    00372      * @param dataSize データサイズ
    00373      */
    00374     virtual void writeStaticIndexBuffer(
    00375         Direct3DIndexBuffer* indexBuffer, const void* data, int dataSize);
    00376
    00377     /**
    00378      * 動的インデックスバッファの構築
    00379      * @param bufferSize バッファサイズ
    00380      * @return 動的インデックスバッファ
    00381      */
    00382     virtual Direct3DIndexBuffer* createDynamicIndexBuffer(int bufferSize);
    00383
    00384     /**
    00385      * 動的インデックスバッファの書き込み
    00386      * @param indexBuffer インデックスバッファ
    00387      * @param data データ
    00388      * @param dataSize データサイズ
    00389      */
    00390     virtual void writeDynamicIndexBuffer(
    00391         Direct3DIndexBuffer* indexBuffer, const void* data, int dataSize);
    00392
    00393     /**
    00394      * インデックスバッファの設定
    00395      * @param indexBuffer インデックスバッファ
    00396      */
    00397     virtual void setIndexBuffer(Direct3DIndexBuffer* indexBuffer);
    00398
    00399     //--------------------------------------------------------------------------
    00400     // 頂点記述
    00401     //--------------------------------------------------------------------------
    00402     /**
    00403      * 頂点記述の構築
    00404      * @param vertexDeclaration [out] 頂点記述
    00405      * @param hasPosition 位置を持つか
    00406      * @param weightsPerVertex 頂点あたりウェイト数
    00407      * @param bonesPerVertex 頂点あたりボーン数
    00408      * @param hasNormal 法線を持つか
    00409      * @param hasColor 頂点カラーを持つか
    00410      * @param texCoordSetCount テクスチャ座標セット数
    00411      * @param texCoordTypeArray テクスチャ座標タイプ配列
    00412      * @return 頂点サイズ
    00413      */
    00414     virtual int createVertexDeclaration(
    00415         Direct3DVertexDeclaration** vertexDeclaration, bool hasPosition,
    00416         int weightsPerVertex, int bonesPerVertex, bool hasNormal,
    00417         bool hasColor, int texCoordSetCount,
    00418         const TexCoord::Type* texCoordTypeArray);
    00419
    00420     /**
    00421      * 頂点記述の設定
    00422      * @param vertexDeclaration 頂点記述
    00423      */
    00424     virtual void setVertexDeclaration(
    00425         Direct3DVertexDeclaration* vertexDeclaration);
    00426
    00427     //--------------------------------------------------------------------------
    00428     // 頂点バッファ
    00429     //--------------------------------------------------------------------------
    00430     /**
    00431      * 静的頂点バッファの構築
    00432      * @param bufferSize バッファサイズ
    00433      * @return 静的頂点バッファ
    00434      */
    00435     virtual Direct3DVertexBuffer* createStaticVertexBuffer(int bufferSize);
    00436
    00437     /**
    00438      * 静的頂点バッファの書き込み
    00439      * @param vertexBuffer 静的頂点バッファ
    00440      * @param bufferSize バッファサイズ
    00441      * @param vertexCount 頂点数
    00442      * @param positions 位置配列
    00443      * @param weightsPerVertex 頂点あたりウェイト数
    00444      * @param weights ウェイト配列
    00445      * @param bonesBerVertex 頂点あたりボーン数
    00446      * @param boneIndices ボーンインデックス配列
    00447      * @param normals 法線配列
    00448      * @param colors 頂点カラー配列
    00449      * @param texCoordSetCount テクスチャ座標セット数
    00450      * @param texCoordTypeArray テクスチャ座標タイプ配列
    00451      * @param texCoords テクスチャ座標配列
    00452      */
    00453     virtual void writeStaticVertexBuffer(
    00454         Direct3DVertexBuffer* vertexBuffer, int bufferSize, int vertexCount,
    00455         const Vector3* positions, int weightsPerVertex, const float* weights,
    00456         int bonesBerVertex, const u_char* boneIndices, const Vector3* normals,
    00457         const Color4c* colors, int texCoordSetCount,
    00458         const TexCoord::Type* texCoordTypeArray, const float* const* texCoords);
    00459
    00460     /**
    00461      * 動的頂点バッファの構築
    00462      * @param bufferSize バッファサイズ
    00463      * @return 動的頂点バッファ
    00464      */
    00465     virtual Direct3DVertexBuffer* createDynamicVertexBuffer(int bufferSize);
    00466
    00467     /**
    00468      * 動的頂点バッファのロック
    00469      * @param vertexBuffer 動的頂点バッファ
    00470      * @param offset オフセット
    00471      * @param size サイズ
    00472      * @return 書き込みアドレス
    00473      */
    00474     virtual u_char* lockDynamicVertexBuffer(
    00475         Direct3DVertexBuffer* vertexBuffer, int offset, int size);
    00476
    00477     /**
    00478      * 動的頂点バッファのアンロック
    00479      * @param vertexBuffer 動的頂点バッファ
    00480      */
    00481     virtual void unlockDynamicVertexBuffer(Direct3DVertexBuffer* vertexBuffer);
    00482
    00483     /**
    00484      * 動的頂点バッファの書き込み
    00485      * @param vertexBuffer 動的頂点バッファ
    00486      * @param bufferSize バッファサイズ
    00487      * @param vertexCount 頂点数
    00488      * @param positions 位置配列
    00489      * @param weightsPerVertex 頂点あたりウェイト数
    00490      * @param weights ウェイト配列
    00491      * @param bonesBerVertex 頂点あたりボーン数
    00492      * @param boneIndices ボーンインデックス配列
    00493      * @param normals 法線配列
    00494      * @param colors 頂点カラー配列
    00495      * @param texCoordSetCount テクスチャ座標セット数
    00496      * @param texCoordTypeArray テクスチャ座標タイプ配列
    00497      * @param texCoords テクスチャ座標配列
    00498      */
    00499     virtual void writeDynamicVertexBuffer(
    00500         Direct3DVertexBuffer* vertexBuffer, int bufferSize, int vertexCount,
    00501         const Vector3* positions, int weightsPerVertex, const float* weights,
    00502         int bonesBerVertex, const u_char* boneIndices, const Vector3* normals,
    00503         const Color4c* colors, int texCoordSetCount,
    00504         const TexCoord::Type* texCoordTypeArray, const float* const* texCoords);
    00505
    00506     /**
    00507      * 頂点バッファの設定
    00508      * @param vertexBuffer 頂点バッファ
    00509      * @param vertexSize 頂点サイズ
    00510      */
    00511     virtual void setVertexBuffer(
    00512         Direct3DVertexBuffer* vertexBuffer, int vertexSize);
    00513
    00514     //--------------------------------------------------------------------------
    00515     // 描画
    00516     //--------------------------------------------------------------------------
    00517     /**
    00518      * 三角リスト描画
    00519      * @param primitiveCount プリミティブ数
    00520      */
    00521     virtual void drawTriangleList(int primitiveCount);
    00522
    00523     /**
    00524      * インデックス三角リスト描画
    00525      * @param vertexCount 頂点数
    00526      * @param primitiveCount プリミティブ数
    00527      */
    00528     virtual void drawIndexedTriangleList(int vertexCount, int primitiveCount);
    00529
    00530     /**
    00531      * インデックス三角リスト描画
    00532      * @param baseVertexIndex 頂点インデックスオフセット
    00533      * @param minIndex 最小インデックス
    00534      * @param vertexCount 頂点数
    00535      * @param startIndex 開始インデックス
    00536      * @param primitiveCount プリミティブ数
    00537      */
    00538     virtual void drawIndexedTriangleList(int baseVertexIndex,
    00539         int minIndex, int vertexCount, int startIndex, int primitiveCount);
    00540
    00541     //--------------------------------------------------------------------------
    00542     /**
    00543      * ラインリスト描画
    00544      * @param primitiveCount プリミティブ数
    00545      */
    00546     virtual void drawLineList(int primitiveCount);
    00547
    00548     /**
    00549      * インデックスラインリスト描画
    00550      * @param vertexCount 頂点数
    00551      * @param primitiveCount プリミティブ数
    00552      */
    00553     virtual void drawIndexedLineList(int vertexCount, int primitiveCount);
    00554
    00555     //--------------------------------------------------------------------------
    00556     // カウンタ関連
    00557     //--------------------------------------------------------------------------
    00558     /**
    00559      * カウンタのリセット
    00560      */
    00561     virtual void resetCounter(){
    00562         drawPrimitiveCount_ = 0;
    00563         drawPolygonCount_ = 0;
    00564         drawVertexCount_ = 0;
    00565     }
    00566
    00567     /**
    00568      * 頂点カウントの追加
    00569      * @param drawPolygonCount 描画ポリゴンカウント
    00570      * @param drawVertexCount 描画頂点カウント
    00571      */
    00572     virtual void addVertexCount(int drawPolygonCount, int drawVertexCount){
    00573         drawPrimitiveCount_++;
    00574         drawPolygonCount_ += drawPolygonCount;
    00575         drawVertexCount_ += drawVertexCount;
    00576     }
    00577
    00578     /**
    00579      * DrawPrimitiveカウントの取得
    00580      * @return DrawPrimitiveカウント
    00581      */
    00582     virtual int getDrawPrimitiveCount(){ return drawPrimitiveCount_; }
    00583
    00584     /**
    00585      * 描画ポリゴンカウントの取得
    00586      * @return 描画ポリゴンカウント
    00587      */
    00588     virtual int getDrawPolygonCount(){ return drawPolygonCount_; }
    00589
    00590     /**
    00591      * 描画頂点カウント
    00592      * @return 描画頂点カウント
    00593      */
    00594     virtual int getDrawVertexCount(){ return drawVertexCount_; }
    00595
    00596 protected:
    00597     //--------------------------------------------------------------------------
    00598     /**
    00599      * コンストラクタ
    00600      * @param capacity デバイス能力
    00601      */
    00602     RenderingDevice(GraphicsDeviceCapacity* capacity);
    00603
    00604     /**
    00605      * デストラクタ
    00606      */
    00607     virtual ~RenderingDevice();
    00608
    00609     //--------------------------------------------------------------------------
    00610     // ユーティリティ
    00611     //--------------------------------------------------------------------------
    00612     /**
    00613      * 頂点データの書き込み
    00614      * @param buffer 書き込みバッファ
    00615      * @param bufferSize バッファサイズ
    00616      * @param vertexCount 頂点数
    00617      * @param positions 位置配列
    00618      * @param weightsPerVertex 頂点あたりウェイト数
    00619      * @param weights ウェイト配列
    00620      * @param bonesBerVertex 頂点あたりボーン数
    00621      * @param boneIndices ボーンインデックス配列
    00622      * @param normals 法線配列
    00623      * @param colors 頂点カラー配列
    00624      * @param texCoordSetCount テクスチャ座標セット数
    00625      * @param texCoordTypeArray テクスチャ座標タイプ配列
    00626      * @param texCoords テクスチャ座標配列
    00627      */
    00628     virtual void writeVertices(u_char* buffer, int bufferSize, int vertexCount,
    00629         const Vector3* positions, int weightsPerVertex, const float* weights,
    00630         int bonesBerVertex, const u_char* boneIndices, const Vector3* normals,
    00631         const Color4c* colors, int texCoordSetCount,
    00632         const TexCoord::Type* texCoordTypeArray, const float* const* texCoords);
    00633
    00634     /**
    00635      * D3Dベクトルの設定
    00636      * @param destination 設定先
    00637      * @param source 設定元
    00638      */
    00639     virtual void setD3DVector(D3DVECTOR& destination, const Vector3& source);
    00640
    00641     /**
    00642      * D3Dカラーの設定
    00643      * @param destination 設定先
    00644      * @param source 設定元
    00645      */
    00646     virtual void setD3DColor(D3DCOLORVALUE& destination, const Color4f& source);
    00647
    00648     /**
    00649      * D3Dカラーの設定
    00650      * @param destination 設定先
    00651      * @param source 設定元
    00652      */
    00653     virtual void setD3DColor(D3DCOLORVALUE& destination, const Color3f& source);
    00654
    00655     //--------------------------------------------------------------------------
    00656     // ステートブロック関連
    00657     //--------------------------------------------------------------------------
    00658     /**
    00659      * デフォルトステートブロックのリストア
    00660      * @param direct3DDevice Direct3Dデバイス
    00661      */
    00662     virtual void restoreDefaultStateBlock(Direct3DDevice* direct3DDevice);
    00663
    00664     /**
    00665      * デフォルトステートブロックの無効化
    00666      */
    00667     virtual void invalidateDefaultStateBlock(){
    00668         SafeRelease(defaultStateBlock_);
    00669     }
    00670
    00671 private:
    00672     //--------------------------------------------------------------------------
    00673     // コピーコンストラクタの隠蔽
    00674     RenderingDevice(const RenderingDevice& copy);
    00675
    00676     // 代入コピーの隠蔽
    00677     void operator =(const RenderingDevice& copy);
    00678
    00679     //--------------------------------------------------------------------------
    00680     // システム
    00681     //--------------------------------------------------------------------------
    00682     // デバイス能力
    00683     GraphicsDeviceCapacity* capacity_;
    00684     // Direct3Dデバイス
    00685     Direct3DDevice* device_;
    00686     // デフォルトステートブロック
    00687     Direct3DStateBlock* defaultStateBlock_;
    00688
    00689     //--------------------------------------------------------------------------
    00690     // カウンタ関連
    00691     //--------------------------------------------------------------------------
    00692     // DrawPrimitiveカウント
    00693     int drawPrimitiveCount_;
    00694     // 描画ポリゴンカウント
    00695     int drawPolygonCount_;
    00696     // 描画頂点カウント
    00697     int drawVertexCount_;
    00698
    00699     //--------------------------------------------------------------------------
    00700     // インスタンス
    00701     static RenderingDevice* instance_;
    00702
    00703 };
    00704
    00705 //------------------------------------------------------------------------------
    00706 } // End of namespace Lamp
    00707 #endif // End of RENDERING_DEVICE_H_
    00708 //------------------------------------------------------------------------------