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

# GraphicsDeviceCapacity.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 GRAPHICS_DEVICE_CAPACITY_H_
    00026 #define GRAPHICS_DEVICE_CAPACITY_H_
    00027
    00028 #include <Graphics/Primitive/VertexProcessingType.h>
    00029
    00030 namespace Lamp{
    00031
    00032 //------------------------------------------------------------------------------
    00033 /**
    00034  * グラフィックスデバイス能力
    00035  */
    00036 class GraphicsDeviceCapacity{
    00037 friend class LampGraphics;
    00038 public:
    00039     //--------------------------------------------------------------------------
    00040     /**
    00041      * インスタンス取得
    00042      * @return インスタンス
    00043      */
    00044     static GraphicsDeviceCapacity* getInstance(){
    00045         Assert(instance_ != NULL);
    00046         return instance_;
    00047     }
    00048
    00049     //--------------------------------------------------------------------------
    00050     /**
    00051      * デバイス能力の取得
    00052      * @return デバイス能力
    00053      */
    00054     virtual const D3DCapacity& getCapacity() const{ return capacity_; }
    00055
    00056     /**
    00057      * 文字列への変換
    00058      * @return グラフィックスデバイス能力文字列
    00059      */
    00060     virtual String toString() const;
    00061
    00062     //--------------------------------------------------------------------------
    00063     // デバイス情報
    00064     //--------------------------------------------------------------------------
    00065     /**
    00066      * デバイス名の取得
    00067      * @return デバイス名
    00068      */
    00069     virtual const String& getDeviceName() const{ return deviceName_; }
    00070
    00071     /**
    00072      * ドライバ名の取得
    00073      * @return ドライバ名
    00074      */
    00075     virtual const String& getDriverName() const{ return driverName_; }
    00076
    00077     /**
    00078      * デバイス番号の取得
    00079      * @return デバイス番号
    00080      */
    00081     virtual int getDeviceOrdinal() const{ return deviceOrdinal_; }
    00082
    00083     /**
    00084      * デバイスタイプの取得
    00085      * @return デバイスタイプ
    00086      */
    00087     virtual D3DDEVTYPE getDeviceType() const{ return deviceType_; }
    00088
    00089     /**
    00090      * ウィンドウモードの取得
    00091      * @return ウィンドウモードならtrue
    00092      */
    00093     virtual bool isWindowed() const{ return isWindowed_; }
    00094
    00095     /**
    00096      * 頂点プロセスタイプの取得
    00097      * @return 頂点プロセスタイプ
    00098      */
    00099     virtual VertexProcessingType getVertexProcessingType() const{
    00100         return vertexProcessingType_;
    00101     }
    00102
    00103     /**
    00104      * アダプタフォーマットの取得
    00105      * @return アダプタフォーマット
    00106      */
    00107     virtual D3DFORMAT getAdapterFormat() const{ return adapterFormat_; }
    00108
    00109     /**
    00110      * バックバッファフォーマットの取得
    00111      * @return バックバッファフォーマット
    00112      */
    00113     virtual D3DFORMAT getBackBufferFormat() const{ return backBufferFormat_; }
    00114
    00115     /**
    00116      * バックバッファサイズの取得
    00117      * @return バックバッファサイズ
    00118      */
    00119     virtual const DimensionI& getBackBufferSize() const{
    00120         return backBufferSize_;
    00121     }
    00122
    00123     /**
    00124      * バックバッファアスペクト比の取得
    00125      * @return バックバッファアスペクト比
    00126      */
    00127     virtual float getBackBufferAspectRate() const{
    00128         return ((float)backBufferSize_.width / (float)backBufferSize_.height);
    00129     }
    00130
    00131     /**
    00132      * リフレッシュレートの取得
    00133      * @return リフレッシュレート
    00134      */
    00135     virtual int getRefreshRate() const{ return refreshRate_; }
    00136
    00137     /**
    00138      * 深度、ステンシルバッファは有効か
    00139      * @return 深度、ステンシルバッファが有効ならtrue
    00140      */
    00141     virtual bool getDepthStencilEnabled() const{ return depthStencilEnabled_; }
    00142
    00143     /**
    00144      * 深度、ステンシルフォーマットの取得
    00145      * @return 深度、ステンシルフォーマット
    00146      */
    00147     virtual D3DFORMAT getDepthStencilFormat() const{
    00148         return depthStencilFormat_;
    00149     }
    00150
    00151     /**
    00152      * プレゼンテーション間隔の取得
    00153      * @return プレゼンテーション間隔
    00154      */
    00155     virtual int getPresentationInterval() const{ return presentationInterval_; }
    00156
    00157     /**
    00158      * マルチサンプルタイプの取得
    00159      * @return マルチサンプルタイプ
    00160      */
    00161     virtual D3DMULTISAMPLE_TYPE getMultiSampleType() const{
    00162         return multiSampleType_;
    00163     }
    00164
    00165     /**
    00166      * マルチサンプルクォリティの取得
    00167      * @return マルチサンプルクォリティ
    00168      */
    00169     virtual u_int getMultiSampleQuality() const{ return multiSampleQuality_; }
    00170
    00171     //--------------------------------------------------------------------------
    00172     // デバイス能力
    00173     //--------------------------------------------------------------------------
    00174     /**
    00175      * マルチレンダーターゲット数の取得
    00176      * @return マルチレンダーターゲット数
    00177      */
    00178     virtual u_int getNumSimultaneousRTs() const{ return numSimultaneousRTs_; }
    00179
    00180     /**
    00181      * システムメモリで実行はサポートされているか
    00182      * @return システムメモリで実行がサポートされているならtrue
    00183      */
    00184     virtual bool supportedExecuteSystemMemory() const{
    00185         return executeSystemMemory_;
    00186     }
    00187
    00188     /**
    00189      * ビデオメモリで実行はサポートされているか
    00190      * @return ビデオメモリで実行がサポートされているならtrue
    00191      */
    00192     virtual bool supportedExecuteVideoMemory() const{
    00193         return executeVideoMemory_;
    00194     }
    00195
    00196     /**
    00197      * システムメモリ上のTL頂点はサポートされているか
    00198      * @return システムメモリ上のTL頂点がサポートされているならtrue
    00199      */
    00200     virtual bool supportedTlVertexSystemMemory() const{
    00201         return tlVertexSystemMemory_;
    00202     }
    00203
    00204     /**
    00205      * ビデオメモリ上のTL頂点はサポートされているか
    00206      * @return ビデオメモリ上のTL頂点がサポートされているならtrue
    00207      */
    00208     virtual bool supportedTlVertexVideoMemory() const{
    00209         return tlVertexVideoMemory_;
    00210     }
    00211
    00212     /**
    00213      * システムメモリ上のテクスチャはサポートされているか
    00214      * @return システムメモリ上のテクスチャがサポートされているならtrue
    00215      */
    00216     virtual bool supportedTextureSystemMemory() const{
    00217         return textureSystemMemory_;
    00218     }
    00219
    00220     /**
    00221      * ビデオメモリ上のテクスチャはサポートされているか
    00222      * @return ビデオメモリ上のテクスチャがサポートされているならtrue
    00223      */
    00224     virtual bool supportedTextureVideoMemory() const{
    00225         return textureVideoMemory_;
    00226     }
    00227
    00228     /**
    00229      * TL頂点の描画はサポートされているか
    00230      * @return TL頂点の描画がサポートされているならtrue
    00231      */
    00232     virtual bool supportedDrawPrimTlVertex() const{
    00233         return drawPrimTlVertex_;
    00234     }
    00235
    00236     /**
    00237      * フリップ後のレンダリングはサポートされているか
    00238      * @return フリップ後のレンダリングがサポートされているならtrue
    00239      */
    00240     virtual bool supportedCanRenderAfterFlip() const{
    00241         return canRenderAfterFlip_;
    00242     }
    00243
    00244     /**
    00245      * 非ローカルビデオメモリはサポートされているか
    00246      * @return 非ローカルビデオメモリがサポートされているならtrue
    00247      */
    00248     virtual bool supportedTextureNonLocalVidedMemory() const{
    00249         return textureNonLocalVidedMemory_;
    00250     }
    00251
    00252     /**
    00253      * DrawPrivitives2はサポートされているか
    00254      * @return DrawPrivitives2がサポートされているならtrue
    00255      */
    00256     virtual bool supportedDrawPrimitives2() const{ return drawPrimitives2_; }
    00257
    00258     /**
    00259      * 独立したテクスチャメモリプールはサポートされているか
    00260      * @return 独立したテクスチャメモリプールがサポートされているならtrue
    00261      */
    00262     virtual bool supportedSeparateTextureMemories() const{
    00263         return separateTextureMemories_;
    00264     }
    00265
    00266     /**
    00267      * DrawPrimitives2EXはサポートされているか
    00268      * @return DrawPrimitives2EXがサポートされているならtrue
    00269      */
    00270     virtual bool supportedDrawPrimitives2EX() const{
    00271         return drawPrimitives2EX_;
    00272     }
    00273
    00274     /**
    00275      * ハードウェアT&Lはサポートされているか
    00276      * @return ハードウェアT&Lがサポートされているならtrue
    00277      */
    00278     virtual bool supportedHwTransformAndLight() const{
    00279         return hwTransformAndLight_;
    00280     }
    00281
    00282     /**
    00283      * システムからビデオへのBLTはサポートされているか
    00284      * @return システムからビデオへのBLTがサポートされているならtrue
    00285      */
    00286     virtual bool supportedCanBltSystemToNonLocal() const{
    00287         return canBltSystemToNonLocal_;
    00288     }
    00289
    00290     /**
    00291      * ハードウェアラスタライズはサポートされているか
    00292      * @return ハードウェアラスタライズがサポートされているならtrue
    00293      */
    00294     virtual bool supportedHwRasterization() const{ return hwRasterization_; }
    00295
    00296     /**
    00297      * ピュアデバイスはサポートされているか
    00298      * @return ピュアデバイスがサポートされているならtrue
    00299      */
    00300     virtual bool supportedPureDevice() const{ return pureDevice_; }
    00301
    00302     /**
    00303      * ベジェ、Bスプラインはサポートされているか
    00304      * @return ベジェ、Bスプラインがサポートされているならtrue
    00305      */
    00306     virtual bool supportedQuinticRtPatches() const{ return quinticRtPatches_; }
    00307
    00308     /**
    00309      * 矩形、三角形パッチはサポートされているか
    00310      * @return 矩形、三角形パッチがサポートされているならtrue
    00311      */
    00312     virtual bool supportedRtPatches() const{ return rtPatches_; }
    00313
    00314     /**
    00315      * 効率的なハンドル0パッチはサポートされているか
    00316      * @return 効率的なハンドル0パッチがサポートされているならtrue
    00317      */
    00318     virtual bool supportedRtPatchHanldeZero() const{
    00319         return rtPatchHanldeZero_;
    00320     }
    00321
    00322     /**
    00323      * Nパッチはサポートされているか
    00324      * @return Nパッチがサポートされているならtrue
    00325      */
    00326     virtual bool supportedNPatches() const{ return nPatches_; }
    00327
    00328     /**
    00329      * プレゼンテーション間隔即時はサポートされているか
    00330      * @return プレゼンテーション間隔即時がサポートされているならtrue
    00331      */
    00332     virtual bool supportedPresentationIntervalImmediate() const{
    00333         return presentationIntervalImmediate_;
    00334     }
    00335
    00336     /**
    00337      * プレゼンテーション間隔1垂直同期はサポートされているか
    00338      * @return プレゼンテーション間隔1垂直同期がサポートされているならtrue
    00339      */
    00340     virtual bool supportedPresentationIntervalOne() const{
    00341         return presentationIntervalOne_;
    00342     }
    00343
    00344     /**
    00345      * プレゼンテーション間隔2垂直同期はサポートされているか
    00346      * @return プレゼンテーション間隔2垂直同期がサポートされているならtrue
    00347      */
    00348     virtual bool supportedPresentationIntervalTwo() const{
    00349         return presentationIntervalTwo_;
    00350     }
    00351
    00352     /**
    00353      * プレゼンテーション間隔3垂直同期はサポートされているか
    00354      * @return プレゼンテーション間隔3垂直同期がサポートされているならtrue
    00355      */
    00356     virtual bool supportedPresentationIntervalThree() const{
    00357         return presentationIntervalThree_;
    00358     }
    00359
    00360     /**
    00361      * プレゼンテーション間隔4垂直同期はサポートされているか
    00362      * @return プレゼンテーション間隔4垂直同期がサポートされているならtrue
    00363      */
    00364     virtual bool supportedPresentationIntervalFour() const{
    00365         return presentationIntervalFour_;
    00366     }
    00367
    00368     /**
    00369      * ハードウェアカーソルはサポートされているか
    00370      * @return ハードウェアカーソルがサポートされているならtrue
    00371      */
    00372     virtual bool supportedCursorColor() const{ return cursorColor_; }
    00373
    00374     /**
    00375      * 低解像度ハードウェアカーソルはサポートされているか
    00376      * @return 低解像度ハードウェアカーソルがサポートされているならtrue
    00377      */
    00378     virtual bool supportedCursorLowRes() const{ return cursorLowRes_; }
    00379
    00380     /**
    00381      * StretchRectMinPointフィルタはサポートされているか
    00382      * @return StretchRectMinPointフィルタがサポートされているならtrue
    00383      */
    00384     virtual bool supportedStretchRectMinPoint() const{
    00385         return stretchRectMinPoint_;
    00386     }
    00387
    00388     /**
    00389      * StretchRectMagPointフィルタはサポートされているか
    00390      * @return StretchRectMagPointフィルタがサポートされているならtrue
    00391      */
    00392     virtual bool supportedStretchRectMagPoint() const{
    00393         return stretchRectMagPoint_;
    00394     }
    00395
    00396     /**
    00397      * StretchRectMinLinearフィルタはサポートされているか
    00398      * @return StretchRectMinLinearフィルタがサポートされているならtrue
    00399      */
    00400     virtual bool supportedStretchRectMinLinear() const{
    00401         return stretchRectMinLinear_;
    00402     }
    00403
    00404     /**
    00405      * StretchRectMagLinearフィルタはサポートされているか
    00406      * @return StretchRectMagLinearフィルタがサポートされているならtrue
    00407      */
    00408     virtual bool supportedStretchRectMagLinear() const{
    00409         return stretchRectMagLinear_;
    00410     }
    00411
    00412     //--------------------------------------------------------------------------
    00413     // デバイスその他
    00414     //--------------------------------------------------------------------------
    00415     /**
    00416      * マスターアダプタ番号の取得
    00417      * @return マスターアダプタ番号
    00418      */
    00419     virtual u_int getMasterAdapterOrdinal() const{
    00420         return masterAdapterOrdinal_;
    00421     }
    00422
    00423     /**
    00424      * グループ内のアダプタ番号の取得
    00425      * @return グループ内のアダプタ番号
    00426      */
    00427     virtual u_int getAdapterOrdinalInGroup() const{
    00428         return adapterOrdinalInGroup_;
    00429     }
    00430
    00431     /**
    00432      * グループのアダプタ数の取得
    00433      * @return グループのアダプタ数
    00434      */
    00435     virtual u_int getNumberOfAdaptersInGroup() const{
    00436         return numberOfAdaptersInGroup_;
    00437     }
    00438
    00439     /**
    00440      * Zマスクはサポートされているか
    00441      * @return Zマスクがサポートされているならtrue
    00442      */
    00443     virtual bool supportedMaskZ() const{ return maskZ_; }
    00444
    00445     /**
    00446      * カリング無しはサポートされているか
    00447      * @return カリング無しがサポートされているならtrue
    00448      */
    00449     virtual bool supportedCullNone() const{ return cullNone_; }
    00450
    00451     /**
    00452      * 時計回りカリングはサポートされているか
    00453      * @return 時計回りカリングがサポートされているならtrue
    00454      */
    00455     virtual bool supportedCullCW() const{ return cullCW_; }
    00456
    00457     /**
    00458      * 反時計回りカリングはサポートされているか
    00459      * @return 反時計回りカリングがサポートされているならtrue
    00460      */
    00461     virtual bool supportedCullCCW() const{ return cullCCW_; }
    00462
    00463     /**
    00464      * カラーチャンネル書き込みはサポートされているか
    00465      * @return カラーチャンネル書き込みがサポートされているならtrue
    00466      */
    00467     virtual bool supportedColorWriteEnable() const{ return colorWriteEnable_; }
    00468
    00469     /**
    00470      * 正確なポイントクリップはサポートされているか
    00471      * @return 正確なポイントクリップがサポートされているならtrue
    00472      */
    00473     virtual bool supportedClipPlaneScaledPoints() const{
    00474         return clipPlaneScaledPoints_;
    00475     }
    00476
    00477     /**
    00478      * 頂点クリップはサポートされているか
    00479      * @return 頂点クリップがサポートされているならtrue
    00480      */
    00481     virtual bool supportedClipTlVerts() const{ return clipTlVerts_; }
    00482
    00483     /**
    00484      * テンポラリテクスチャ引数はサポートされているか
    00485      * @return テンポラリテクスチャ引数がサポートされているならtrue
    00486      */
    00487     virtual bool supportedTssArgTemp() const{ return tssArgTemp_; }
    00488
    00489     /**
    00490      * アルファブレンディングはサポートされているか
    00491      * @return アルファブレンディングがサポートされているならtrue
    00492      */
    00493     virtual bool supportedBlendOp() const{ return blendOp_; }
    00494
    00495     /**
    00496      * ヌルリファレンスはサポートされているか
    00497      * @return ヌルリファレンスがサポートされているならtrue
    00498      */
    00499     virtual bool supportedNullReference() const{ return nullReference_; }
    00500
    00501     /**
    00502      * 独立した書き込みマスクはサポートされているか
    00503      * @return 独立した書き込みマスクがサポートされているならtrue
    00504      */
    00505     virtual bool supportedIndependentWriteMasks() const{
    00506         return independentWriteMasks_;
    00507     }
    00508
    00509     /**
    00510      * テクスチャステージ定数はサポートされているか
    00511      * @return テクスチャステージ定数がサポートされているならtrue
    00512      */
    00513     virtual bool supportedPerStageConstant() const{ return perStageConstant_; }
    00514
    00515     /**
    00516      * フォグとスペキュラアルファはサポートされているか
    00517      * @return フォグとスペキュラアルファがサポートされているならtrue
    00518      */
    00519     virtual bool supportedFogAndSpecularAlpha() const{
    00520         return fogAndSpecularAlpha_;
    00521     }
    00522
    00523     /**
    00524      * アルファ用ブレンドはサポートされているか
    00525      * @return アルファ用ブレンドがサポートされているならtrue
    00526      */
    00527     virtual bool supportedSeparateAlphaBlend() const{
    00528         return separateAlphaBlend_;
    00529     }
    00530
    00531     /**
    00532      * MRTに違うZ深度はサポートされているか
    00533      * @return MRTに違うZ深度がサポートされているならtrue
    00534      */
    00535     virtual bool supportedMrtIndependentBitDepth() const{
    00536         return mrtIndependentBitDepth_;
    00537     }
    00538
    00539     /**
    00540      * MRTにピクセルシェーダ後処理はサポートされているか
    00541      * @return MRTにピクセルシェーダ後処理がサポートされているならtrue
    00542      */
    00543     virtual bool supportedMrtPostPixelShaderBlending() const{
    00544         return mrtPostPixelShaderBlending_;
    00545     }
    00546
    00547     /**
    00548      * 頂点フォグのクランプはサポートされているか
    00549      * @return 頂点フォグのクランプがサポートされているならtrue
    00550      */
    00551     virtual bool supportedFogVertexClamped() const{ return fogVertexClamped_; }
    00552
    00553     //--------------------------------------------------------------------------
    00554     // ドライバ能力
    00555     //--------------------------------------------------------------------------
    00556     /**
    00557      * スキャンラインの読み込みはサポートされているか
    00558      * @return スキャンラインの読み込みがサポートされているならtrue
    00559      */
    00560     virtual bool supportedReadScanLine() const{ return readScanLine_; }
    00561
    00562     /**
    00563      * フルスクリーンガンマはサポートされているか
    00564      * @return フルスクリーンガンマがサポートされているならtrue
    00565      */
    00566     virtual bool supportedFullscreenGamma() const{ return fullscreenGamma_; }
    00567
    00568     /**
    00569      * キャリブレートガンマはサポートされているか
    00570      * @return キャリブレートガンマがサポートされているならtrue
    00571      */
    00572     virtual bool supportedCanCalibrateGamma() const{
    00573         return canCalibrateGamma_;
    00574     }
    00575
    00576     /**
    00577      * マネージドリソースはサポートされているか
    00578      * @return マネージドリソースがサポートされているならtrue
    00579      */
    00580     virtual bool supportedCanManageResource() const{
    00581         return canManageResource_;
    00582     }
    00583
    00584     /**
    00585      * 動的テクスチャはサポートされているか
    00586      * @return 動的テクスチャがサポートされているならtrue
    00587      */
    00588     virtual bool supportedDynamicTextures() const{ return dynamicTextures_; }
    00589
    00590     /**
    00591      * ミップマップ自動生成はサポートされているか
    00592      * @return ミップマップ自動生成がサポートされているならtrue
    00593      */
    00594     virtual bool supportedCanAutogenMipmap() const{ return canAutogenMipmap_; }
    00595
    00596     /**
    00597      * フルスクリーンアルファブレンドはサポートされているか
    00598      * @return フルスクリーンアルファブレンドがサポートされているならtrue
    00599      */
    00600     virtual bool supportedAlphaFullscreenFlipOrDiscard() const{
    00601         return alphaFullscreenFlipOrDiscard_;
    00602     }
    00603
    00604     /**
    00605      * sRGBプレゼンテーションはサポートされているか
    00606      * @return sRGBプレゼンテーションがサポートされているならtrue
    00607      */
    00608     virtual bool supportedLinerToSrgbPresentation() const{
    00609         return linerToSrgbPresentation_;
    00610     }
    00611
    00612     /**
    00613      * ビデオメモリへのコピーはサポートされているか
    00614      * @return ビデオメモリへのコピーがサポートされているならtrue
    00615      */
    00616     virtual bool supportedCopyToVideoMemory() const{
    00617         return copyToVideoMemory_;
    00618     }
    00619
    00620     /**
    00621      * システムメモリへのコピーはサポートされているか
    00622      * @return システムメモリへのコピーがサポートされているならtrue
    00623      */
    00624     virtual bool supportedCopyToSystemMemory() const{
    00625         return copyToSystemMemory_;
    00626     }
    00627
    00628     //--------------------------------------------------------------------------
    00629     // プリミティブ
    00630     //--------------------------------------------------------------------------
    00631     /**
    00632      * 最大点サイズの取得
    00633      * @return 最大点サイズ
    00634      */
    00635     virtual float getMaxPointSize() const{ return maxPointSize_; }
    00636
    00637     /**
    00638      * ラインテクスチャはサポートされているか
    00639      * @return ラインテクスチャがサポートされているならtrue
    00640      */
    00641     virtual bool supportedLineTexture() const{ return lineTexture_; }
    00642
    00643     /**
    00644      * ラインZテストはサポートされているか
    00645      * @return ラインZテストがサポートされているならtrue
    00646      */
    00647     virtual bool supportedLineZTest() const{ return lineZTest_; }
    00648
    00649     /**
    00650      * ラインブレンドはサポートされているか
    00651      * @return ラインブレンドがサポートされているならtrue
    00652      */
    00653     virtual bool supportedLineBlend() const{ return lineBlend_; }
    00654
    00655     /**
    00656      * ラインフォグはサポートされているか
    00657      * @return ラインフォグがサポートされているならtrue
    00658      */
    00659     virtual bool supportedLineFog() const{ return lineFog_; }
    00660
    00661     /**
    00662      * ラインアルファ比較はサポートされているか
    00663      * @return ラインアルファ比較がサポートされているならtrue
    00664      */
    00665     virtual bool supportedLineAlphaCompare() const{ return lineAlphaCompare_; }
    00666
    00667     /**
    00668      * ラインアンチエイリアスはサポートされているか
    00669      * @return ラインアンチエイリアスがサポートされているならtrue
    00670      */
    00671     virtual bool supportedLineAntialias() const{ return lineAntialias_; }
    00672
    00673     //--------------------------------------------------------------------------
    00674     // 頂点処理
    00675     //--------------------------------------------------------------------------
    00676     /**
    00677      * 最大プリミティブ数の取得
    00678      * @return 最大プリミティブ数
    00679      */
    00680     virtual u_int getMaxPrimitiveCount() const{ return maxPrimitiveCount_; }
    00681
    00682     /**
    00683      * 最大インデックス数の取得
    00684      * @return 最大インデックス数
    00685      */
    00686     virtual u_int getMaxVertexIndex() const{ return maxVertexIndex_; }
    00687
    00688     /**
    00689      * 最大ストリーム数の取得
    00690      * @return 最大ストリーム数
    00691      */
    00692     virtual u_int getMaxStreams() const{ return maxStreams_; }
    00693
    00694     /**
    00695      * 最大ライト数の取得
    00696      * @return 最大ライト数
    00697      */
    00698     virtual u_int getMaxActiveLights() const{ return maxActiveLights_; }
    00699
    00700     /**
    00701      * 最大W値の取得
    00702      * @return 最大W値
    00703      */
    00704     virtual float getMaxVertexW() const{ return maxVertexW_; }
    00705
    00706     /**
    00707      * 最大ブレンド行列数の取得
    00708      * @return 最大ブレンド行列数
    00709      */
    00710     virtual u_int getMaxVertexBlendMatrices() const{
    00711         return maxVertexBlendMatrices_;
    00712     }
    00713
    00714     /**
    00715      * 最大ブレンド行列インデックス数の取得
    00716      * @return 最大ブレンド行列インデックス数
    00717      */
    00718     virtual u_int getMaxVertexBlendMatrixIndex() const{
    00719         return maxVertexBlendMatrixIndex_;
    00720     }
    00721
    00722     /**
    00723      * ガードバンド左の取得
    00724      * @return ガードバンド左
    00725      */
    00726     virtual float getGuardBandLeft() const{ return guardBandLeft_; }
    00727
    00728     /**
    00729      * ガードバンド上の取得
    00730      * @return ガードバンド上
    00731      */
    00732     virtual float getGuardBandTop() const{ return guardBandTop_; }
    00733
    00734     /**
    00735      * ガードバンド右の取得
    00736      * @return ガードバンド右
    00737      */
    00738     virtual float getGuardBandRight() const{ return guardBandRight_; }
    00739
    00740     /**
    00741      * ガードバンド下の取得
    00742      * @return ガードバンド下
    00743      */
    00744     virtual float getGuardBandBottom() const{ return guardBandBottom_; }
    00745
    00746     /**
    00747      * 最大ユーザクリップ面の取得
    00748      * @return 最大ユーザクリップ面
    00749      */
    00750     virtual u_int getMaxUserCliplanes() const{ return maxUserCliplanes_; }
    00751
    00752     /**
    00753      * Texgenはサポートされているか
    00754      * @return Texgenがサポートされているならtrue
    00755      */
    00756     virtual bool supportedTexGen() const{ return texGen_; }
    00757
    00758     /**
    00759      * カラーマテリアルソースはサポートされているか
    00760      * @return カラーマテリアルソースがサポートされているならtrue
    00761      */
    00762     virtual bool supportedMaterialSource() const{ return materialSource_; }
    00763
    00764     /**
    00765      * ディレクショナルライトはサポートされているか
    00766      * @return ディレクショナルライトがサポートされているならtrue
    00767      */
    00768     virtual bool supportedDirectionalLights() const{
    00769         return directionalLights_;
    00770     }
    00771
    00772     /**
    00773      * ポジションライトはサポートされているか
    00774      * @return ポジションライトがサポートされているならtrue
    00775      */
    00776     virtual bool supportedPositionalLights() const{ return positionalLights_; }
    00777
    00778     /**
    00779      * ローカルビューワはサポートされているか
    00780      * @return ローカルビューワがサポートされているならtrue
    00781      */
    00782     virtual bool supportedLocalViewer() const{ return localViewer_; }
    00783
    00784     /**
    00785      * 頂点トゥイーニングはサポートされているか
    00786      * @return 頂点トゥイーニングがサポートされているならtrue
    00787      */
    00788     virtual bool supportedTweening() const{ return tweening_; }
    00789
    00790     /**
    00791      * スフィアマップはサポートされているか
    00792      * @return スフィアマップがサポートされているならtrue
    00793      */
    00794     virtual bool supportedTexgenSpheremap() const{ return texgenSpheremap_; }
    00795
    00796     /**
    00797      * ローカルビューワ外はTexgen不可はサポートされているか
    00798      * @return ローカルビューワ外はTexgen不可がサポートされているならtrue
    00799      */
    00800     virtual bool supportedNoTexgenNonLocalViewer() const{
    00801         return noTexgenNonLocalViewer_;
    00802     }
    00803
    00804     //--------------------------------------------------------------------------
    00805     // 頂点フォーマット
    00806     //--------------------------------------------------------------------------
    00807     /**
    00808      * FVFテクスチャ座標カウントマスクはサポートされているか
    00809      * @return FVFテクスチャ座標カウントマスクがサポートされているならtrue
    00810      */
    00811     virtual bool supportedFvfTexCoordCountMask() const{
    00812         return fvfTexCoordCountMask_;
    00813     }
    00814
    00815     /**
    00816      * FVF頂点に余分な要素を含められるはサポートされているか
    00817      * @return FVF頂点に余分な要素を含められるがサポートされているならtrue
    00818      */
    00819     virtual bool supportedFvfDoNotStripElements() const{
    00820         return fvfDoNotStripElements_;
    00821     }
    00822
    00823     /**
    00824      * FVF頂点サイズはサポートされているか
    00825      * @return FVF頂点サイズがサポートされているならtrue
    00826      */
    00827     virtual bool supportedFvfPSize() const{ return fvfPSize_; }
    00828
    00829     /**
    00830      * u_byte4宣言はサポートされているか
    00831      * @return u_byte4宣言がサポートされているならtrue
    00832      */
    00833     virtual bool supportedDeclUByte4() const{ return declUByte4_; }
    00834
    00835     /**
    00836      * u_byte4N宣言はサポートされているか
    00837      * @return u_byte4N宣言がサポートされているならtrue
    00838      */
    00839     virtual bool supportedDeclUByte4N() const{ return declUByte4N_; }
    00840
    00841     /**
    00842      * short2N宣言はサポートされているか
    00843      * @return short2N宣言がサポートされているならtrue
    00844      */
    00845     virtual bool supportedDeclShort2N() const{ return declShort2N_; }
    00846
    00847     /**
    00848      * short4N宣言はサポートされているか
    00849      * @return short4N宣言がサポートされているならtrue
    00850      */
    00851     virtual bool supportedDeclShort4N() const{ return declShort4N_; }
    00852
    00853     /**
    00854      * u_short2N宣言はサポートされているか
    00855      * @return u_short2N宣言がサポートされているならtrue
    00856      */
    00857     virtual bool supportedDeclUShort2N() const{ return declUShort2N_; }
    00858
    00859     /**
    00860      * u_short4N宣言はサポートされているか
    00861      * @return u_short4N宣言がサポートされているならtrue
    00862      */
    00863     virtual bool supportedDeclUShort4N() const{ return declUShort4N_; }
    00864
    00865     /**
    00866      * uDec3宣言はサポートされているか
    00867      * @return uDec3宣言がサポートされているならtrue
    00868      */
    00869     virtual bool supportedDeclUDec3() const{ return declUDec3_; }
    00870
    00871     /**
    00872      * dec3宣言はサポートされているか
    00873      * @return dec3宣言がサポートされているならtrue
    00874      */
    00875     virtual bool supportedDeclDec3() const{ return declDec3_; }
    00876
    00877     /**
    00878      * float16_2宣言はサポートされているか
    00879      * @return float16_2宣言がサポートされているならtrue
    00880      */
    00881     virtual bool supportedDeclFloat16_2() const{ return declFloat16_2_; }
    00882
    00883     /**
    00884      * float16_4宣言はサポートされているか
    00885      * @return float16_4宣言がサポートされているならtrue
    00886      */
    00887     virtual bool supportedDeclFloat16_4() const{ return declFloat16_4_; }
    00888
    00889     //--------------------------------------------------------------------------
    00890     // テッセレーション
    00891     //--------------------------------------------------------------------------
    00892     /**
    00893      * Nパッチ最大分割レベルの取得
    00894      * @return Nパッチ最大分割レベル
    00895      */
    00896     virtual float getMaxNPatchTesselationLevel() const{
    00897         return maxNPatchTesselationLevel_;
    00898     }
    00899
    00900     /**
    00901      * ストリームオフセットはサポートされているか
    00902      * @return ストリームオフセットがサポートされているならtrue
    00903      */
    00904     virtual bool supportedStreamOffset() const{ return streamOffset_; }
    00905
    00906     /**
    00907      * ディスプレースメントNパッチはサポートされているか
    00908      * @return ディスプレースメントNパッチがサポートされているならtrue
    00909      */
    00910     virtual bool supportedDmapNPatch() const{ return dmapNPatch_; }
    00911
    00912     /**
    00913      *適応型RTパッチ はサポートされているか
    00914      * @return 適応型RTパッチがサポートされているならtrue
    00915      */
    00916     virtual bool supportedAdaptiveTessRTPatch() const{
    00917         return adaptiveTessRTPatch_;
    00918     }
    00919
    00920     /**
    00921      * 適応型Nパッチはサポートされているか
    00922      * @return 適応型Nパッチがサポートされているならtrue
    00923      */
    00924     virtual bool supportedAdaptiveTessNPatch() const{
    00925         return adaptiveTessNPatch_;
    00926     }
    00927
    00928     /**
    00929      * テクスチャからのStretchRectはサポートされているか
    00930      * @return テクスチャからのStretchRectがサポートされているならtrue
    00931      */
    00932     virtual bool supportedCanStretchRectFromTextures() const{
    00933         return canStretchRectFromTextures_;
    00934     }
    00935
    00936     /**
    00937      * プレディスプレースドNパッチはサポートされているか
    00938      * @return プレディスプレースドNパッチがサポートされているならtrue
    00939      */
    00940     virtual bool supportedPreSampledDmapNPatch() const{
    00941         return preSampledDmapNPatch_;
    00942     }
    00943
    00944     /**
    00945      * ストリームオフセット共有はサポートされているか
    00946      * @return ストリームオフセット共有がサポートされているならtrue
    00947      */
    00948     virtual bool supportedVertexElementsCanShareStreamOffset() const{
    00949         return vertexElementsCanShareStreamOffset_;
    00950     }
    00951
    00952     //--------------------------------------------------------------------------
    00953     // シェーディング
    00954     //--------------------------------------------------------------------------
    00955     /**
    00956      * カラーグーロはサポートされているか
    00957      * @return カラーグーロがサポートされているならtrue
    00958      */
    00959     virtual bool supportedShadeColorGouraudRGB() const{
    00960         return shadeColorGouraudRGB_;
    00961     }
    00962
    00963     /**
    00964      * スペキュラグーロはサポートされているか
    00965      * @return スペキュラグーロがサポートされているならtrue
    00966      */
    00967     virtual bool supportedShadeSpecularGouraudRGB() const{
    00968         return shadeSpecularGouraudRGB_;
    00969     }
    00970
    00971     /**
    00972      * アルファグーロはサポートされているか
    00973      * @return アルファグーロがサポートされているならtrue
    00974      */
    00975     virtual bool supportedShadeAlphaGouraudBlend() const{
    00976         return shadeAlphaGouraudBlend_;
    00977     }
    00978
    00979     /**
    00980      * フォググーロはサポートされているか
    00981      * @return フォググーロがサポートされているならtrue
    00982      */
    00983     virtual bool supportedShadeFogGouraud() const{ return shadeFogGouraud_; }
    00984
    00985     //--------------------------------------------------------------------------
    00986     // テクスチャ
    00987     //--------------------------------------------------------------------------
    00988     /**
    00989      * 最大テクスチャサイズの取得
    00990      * @return 最大テクスチャサイズ
    00991      */
    00992     virtual const DimensionI& getMaxTextureSize() const{
    00993         return maxTextureSize_;
    00994     }
    00995
    00996     /**
    00997      * 最大ボリュームテクスチャ辺の取得
    00998      * @return 最大ボリュームテクスチャ辺
    00999      */
    01000     virtual u_int getMaxVolumeExtent() const{ return maxVolumeExtent_; }
    01001
    01002     /**
    01003      * 最大テクスチャリピート数の取得
    01004      * @return 最大テクスチャリピート数
    01005      */
    01006     virtual u_int getMaxTextureRepeat() const{ return maxTextureRepeat_; }
    01007
    01008     /**
    01009      * 最大異方性フィルタ値の取得
    01010      * @return 最大異方性フィルタ値
    01011      */
    01012     virtual u_int getMaxAnisotropy() const{ return maxAnisotropy_; }
    01013
    01014     /**
    01015      * 最大テクスチャアスペクト比の取得
    01016      * @return 最大テクスチャアスペクト比
    01017      */
    01018     virtual u_int getMaxTextureAspectRaito() const{
    01019         return maxTextureAspectRaito_;
    01020     }
    01021
    01022     /**
    01023      * パースペクティブ補正はサポートされているか
    01024      * @return パースペクティブ補正がサポートされているならtrue
    01025      */
    01026     virtual bool supportedTexturePerspective() const{
    01027         return texturePerspective_;
    01028     }
    01029
    01030     /**
    01031      * 辺は2の累乗のみはサポートされているか
    01032      * @return 辺は2の累乗のみがサポートされているならtrue
    01033      */
    01034     virtual bool supportedTexturePow2() const{ return texturePow2_; }
    01035
    01036     /**
    01037      * アルファはサポートされているか
    01038      * @return アルファがサポートされているならtrue
    01039      */
    01040     virtual bool supportedTextureAlpha() const{ return textureAlpha_; }
    01041
    01042     /**
    01043      * 正方形のみはサポートされているか
    01044      * @return 正方形のみがサポートされているならtrue
    01045      */
    01046     virtual bool supportedTextureSquareOnly() const{
    01047         return textureSquareOnly_;
    01048     }
    01049
    01050     /**
    01051      * リピートスケール無しはサポートされているか
    01052      * @return リピートスケール無しがサポートされているならtrue
    01053      */
    01054     virtual bool supportedTextureRepeatNotScaledBySize() const{
    01055         return textureRepeatNotScaledBySize_;
    01056     }
    01057
    01058     /**
    01059      * アルファパレットはサポートされているか
    01060      * @return アルファパレットがサポートされているならtrue
    01061      */
    01062     virtual bool supportedTextureAlphaPalette() const{
    01063         return textureAlphaPalette_;
    01064     }
    01065
    01066     /**
    01067      * 辺は2の累乗で無くてよいはサポートされているか
    01068      * @return 辺は2の累乗で無くてよいがサポートされているならtrue
    01069      */
    01070     virtual bool supportedTextureNonPow2Conditional() const{
    01071         return textureNonPow2Conditional_;
    01072     }
    01073
    01074     /**
    01075      * 射影はサポートされているか
    01076      * @return 射影がサポートされているならtrue
    01077      */
    01078     virtual bool supportedTextureProjected() const{ return textureProjected_; }
    01079
    01080     /**
    01081      * キューブマップはサポートされているか
    01082      * @return キューブマップがサポートされているならtrue
    01083      */
    01084     virtual bool supportedTextureCubemap() const{ return textureCubemap_; }
    01085
    01086     /**
    01087      * ボリュームマップはサポートされているか
    01088      * @return ボリュームマップがサポートされているならtrue
    01089      */
    01090     virtual bool supportedTextureVolumemap() const{ return textureVolumemap_; }
    01091
    01092     /**
    01093      * ミップマップはサポートされているか
    01094      * @return ミップマップがサポートされているならtrue
    01095      */
    01096     virtual bool supportedTextureMipmap() const{ return textureMipmap_; }
    01097
    01098     /**
    01099      * キューブミップマップはサポートされているか
    01100      * @return キューブミップマップがサポートされているならtrue
    01101      */
    01102     virtual bool supportedTextureMipmapCubemap() const{
    01103         return textureMipmapCubemap_;
    01104     }
    01105
    01106     /**
    01107      * ボリュームミップマップはサポートされているか
    01108      * @return ボリュームミップマップがサポートされているならtrue
    01109      */
    01110     virtual bool supportedTextureMipmapVolumemap() const{
    01111         return textureMipmapVolumemap_;
    01112     }
    01113
    01114     /**
    01115      * キューブマップ辺は2の累乗のみはサポートされているか
    01116      * @return キューブマップ辺は2の累乗のみがサポートされているならtrue
    01117      */
    01118     virtual bool supportedTextureCubemapPow2() const{
    01119         return textureCubemapPow2_;
    01120     }
    01121
    01122     /**
    01123      * ボリュームマップ辺は2の累乗のみはサポートされているか
    01124      * @return ボリュームマップ辺は2の累乗のみがサポートされているならtrue
    01125      */
    01126     virtual bool supportedTextureVolumemapPow2() const{
    01127         return textureVolumemapPow2_;
    01128     }
    01129
    01130     /**
    01131      * 射影バンプ環境マップ無しはサポートされているか
    01132      * @return 射影バンプ環境マップ無しがサポートされているならtrue
    01133      */
    01134     virtual bool supportedTextureNoProjectedBumpEnvironment() const{
    01135         return textureNoProjectedBumpEnvironment_;
    01136     }
    01137
    01138     //--------------------------------------------------------------------------
    01139     // テクスチャアドレス
    01140     //--------------------------------------------------------------------------
    01141     /**
    01142      * ラップはサポートされているか
    01143      * @return ラップがサポートされているならtrue
    01144      */
    01145     virtual bool supportedTextureAddressWrap() const{
    01146         return textureAddressWrap_;
    01147     }
    01148
    01149     /**
    01150      * ミラーはサポートされているか
    01151      * @return ミラーがサポートされているならtrue
    01152      */
    01153     virtual bool supportedTextureAddressMirror() const{
    01154         return textureAddressMirror_;
    01155     }
    01156
    01157     /**
    01158      * UVのクランプはサポートされているか
    01159      * @return UVのクランプがサポートされているならtrue
    01160      */
    01161     virtual bool supportedTextureAddressClamp() const{
    01162         return textureAddressClamp_;
    01163     }
    01164
    01165     /**
    01166      * 境界色の設定はサポートされているか
    01167      * @return 境界色の設定がサポートされているならtrue
    01168      */
    01169     virtual bool supportedTextureAddressBorder() const{
    01170         return textureAddressBorder_;
    01171     }
    01172
    01173     /**
    01174      * 独立UVモードはサポートされているか
    01175      * @return 独立UVモードがサポートされているならtrue
    01176      */
    01177     virtual bool supportedTextureAddressIndependentUV() const{
    01178         return textureAddressIndependentUV_;
    01179     }
    01180
    01181     /**
    01182      * 1制限ミラーはサポートされているか
    01183      * @return 1制限ミラーがサポートされているならtrue
    01184      */
    01185     virtual bool supportedTextureAddressMirrorOnce() const{
    01186         return textureAddressMirrorOnce_;
    01187     }
    01188
    01189     /**
    01190      * ボリュームラップはサポートされているか
    01191      * @return ボリュームラップがサポートされているならtrue
    01192      */
    01193     virtual bool supportedVolumeTextureAddressWrap() const{
    01194         return volumeTextureAddressWrap_;
    01195     }
    01196
    01197     /**
    01198      * ボリュームミラーはサポートされているか
    01199      * @return ボリュームミラーがサポートされているならtrue
    01200      */
    01201     virtual bool supportedVolumeTextureAddressMirror() const{
    01202         return volumeTextureAddressMirror_;
    01203     }
    01204
    01205     /**
    01206      * ボリュームUVのクランプはサポートされているか
    01207      * @return ボリュームUVのクランプがサポートされているならtrue
    01208      */
    01209     virtual bool supportedVolumeTextureAddressClamp() const{
    01210         return volumeTextureAddressClamp_;
    01211     }
    01212
    01213     /**
    01214      * ボリューム境界色の設定はサポートされているか
    01215      * @return ボリューム境界色の設定がサポートされているならtrue
    01216      */
    01217     virtual bool supportedVolumeTextureAddressBorder() const{
    01218         return volumeTextureAddressBorder_;
    01219     }
    01220
    01221     /**
    01222      * ボリューム独立UVモードはサポートされているか
    01223      * @return ボリューム独立UVモードがサポートされているならtrue
    01224      */
    01225     virtual bool supportedVolumeTextureAddressIndependentUV() const{
    01226         return volumeTextureAddressIndependentUV_;
    01227     }
    01228
    01229     /**
    01230      * ボリューム1制限ミラーはサポートされているか
    01231      * @return ボリューム1制限ミラーがサポートされているならtrue
    01232      */
    01233     virtual bool supportedVolumeTextureAddressMirrorOnce() const{
    01234         return volumeTextureAddressMirrorOnce_;
    01235     }
    01236
    01237     //--------------------------------------------------------------------------
    01238     // テクスチャフィルタ
    01239     //--------------------------------------------------------------------------
    01240     /**
    01241      * 縮小ポイントはサポートされているか
    01242      * @return 縮小ポイントがサポートされているならtrue
    01243      */
    01244     virtual bool supportedTextureFilterMinPoint() const{
    01245         return textureFilterMinPoint_;
    01246     }
    01247
    01248     /**
    01249      * 縮小線形はサポートされているか
    01250      * @return 縮小線形がサポートされているならtrue
    01251      */
    01252     virtual bool supportedTextureFilterMinLiner() const{
    01253         return textureFilterMinLiner_;
    01254     }
    01255
    01256     /**
    01257      * 縮小異方性はサポートされているか
    01258      * @return 縮小異方性がサポートされているならtrue
    01259      */
    01260     virtual bool supportedTextureFilterMinAnisotropic() const{
    01261         return textureFilterMinAnisotropic_;
    01262     }
    01263
    01264     /**
    01265      * 縮小ピラミッドはサポートされているか
    01266      * @return 縮小ピラミッドがサポートされているならtrue
    01267      */
    01268     virtual bool supportedTextureFilterMinPyramidalQuad() const{
    01269         return textureFilterMinPyramidalQuad_;
    01270     }
    01271
    01272     /**
    01273      * 縮小2次ガウスはサポートされているか
    01274      * @return 縮小2次ガウスがサポートされているならtrue
    01275      */
    01276     virtual bool supportedTextureFilterMinGaussianQuad() const{
    01277         return textureFilterMinGaussianQuad_;
    01278     }
    01279
    01280     /**
    01281      * 拡大ポイントはサポートされているか
    01282      * @return 拡大ポイントがサポートされているならtrue
    01283      */
    01284     virtual bool supportedTextureFilterMagPoint() const{
    01285         return textureFilterMagPoint_;
    01286     }
    01287
    01288     /**
    01289      * 拡大線形はサポートされているか
    01290      * @return 拡大線形がサポートされているならtrue
    01291      */
    01292     virtual bool supportedTextureFilterMagLiner() const{
    01293         return textureFilterMagLiner_;
    01294     }
    01295
    01296     /**
    01297      * 拡大異方性はサポートされているか
    01298      * @return 拡大異方性がサポートされているならtrue
    01299      */
    01300     virtual bool supportedTextureFilterMagAnisotropic() const{
    01301         return textureFilterMagAnisotropic_;
    01302     }
    01303
    01304     /**
    01305      * 拡大ピラミッドはサポートされているか
    01306      * @return 拡大ピラミッドがサポートされているならtrue
    01307      */
    01308     virtual bool supportedTextureFilterMagPyramidalQuad() const{
    01309         return textureFilterMagPyramidalQuad_;
    01310     }
    01311
    01312     /**
    01313      * 拡大2次ガウスはサポートされているか
    01314      * @return 拡大2次ガウスがサポートされているならtrue
    01315      */
    01316     virtual bool supportedTextureFilterMagGaussianQuad() const{
    01317         return textureFilterMagGaussianQuad_;
    01318     }
    01319
    01320     /**
    01321      * ミップマップポイントはサポートされているか
    01322      * @return ミップマップポイントがサポートされているならtrue
    01323      */
    01324     virtual bool supportedTextureFilterMipmapPoint() const{
    01325         return textureFilterMipmapPoint_;
    01326     }
    01327
    01328     /**
    01329      * ミップマップ線形はサポートされているか
    01330      * @return ミップマップ線形がサポートされているならtrue
    01331      */
    01332     virtual bool supportedTextureFilterMipmapLiner() const{
    01333         return textureFilterMipmapLiner_;
    01334     }
    01335
    01336     //--------------------------------------------------------------------------
    01337     /**
    01338      * キューブ縮小ポイントはサポートされているか
    01339      * @return キューブ縮小ポイントがサポートされているならtrue
    01340      */
    01341     virtual bool supportedCubeTextureFilterMinPoint() const{
    01342         return cubeTextureFilterMinPoint_;
    01343     }
    01344
    01345     /**
    01346      * キューブ縮小線形はサポートされているか
    01347      * @return キューブ縮小線形がサポートされているならtrue
    01348      */
    01349     virtual bool supportedCubeTextureFilterMinLiner() const{
    01350         return cubeTextureFilterMinLiner_;
    01351     }
    01352
    01353     /**
    01354      * キューブ縮小異方性はサポートされているか
    01355      * @return キューブ縮小異方性がサポートされているならtrue
    01356      */
    01357     virtual bool supportedCubeTextureFilterMinAnisotropic() const{
    01358         return cubeTextureFilterMinAnisotropic_;
    01359     }
    01360
    01361     /**
    01362      * キューブ縮小ピラミッドはサポートされているか
    01363      * @return キューブ縮小ピラミッドがサポートされているならtrue
    01364      */
    01365     virtual bool supportedCubeTextureFilterMinPyramidalQuad() const{
    01366         return cubeTextureFilterMinPyramidalQuad_;
    01367     }
    01368
    01369     /**
    01370      * キューブ縮小2次ガウスはサポートされているか
    01371      * @return キューブ縮小2次ガウスがサポートされているならtrue
    01372      */
    01373     virtual bool supportedCubeTextureFilterMinGaussianQuad() const{
    01374         return cubeTextureFilterMinGaussianQuad_;
    01375     }
    01376
    01377     /**
    01378      * キューブ拡大ポイントはサポートされているか
    01379      * @return キューブ拡大ポイントがサポートされているならtrue
    01380      */
    01381     virtual bool supportedCubeTextureFilterMagPoint() const{
    01382         return cubeTextureFilterMagPoint_;
    01383     }
    01384
    01385     /**
    01386      * キューブ拡大線形はサポートされているか
    01387      * @return キューブ拡大線形がサポートされているならtrue
    01388      */
    01389     virtual bool supportedCubeTextureFilterMagLiner() const{
    01390         return cubeTextureFilterMagLiner_;
    01391     }
    01392
    01393     /**
    01394      * キューブ拡大異方性はサポートされているか
    01395      * @return キューブ拡大異方性がサポートされているならtrue
    01396      */
    01397     virtual bool supportedCubeTextureFilterMagAnisotropic() const{
    01398         return cubeTextureFilterMagAnisotropic_;
    01399     }
    01400
    01401     /**
    01402      * キューブ拡大ピラミッドはサポートされているか
    01403      * @return キューブ拡大ピラミッドがサポートされているならtrue
    01404      */
    01405     virtual bool supportedCubeTextureFilterMagPyramidalQuad() const{
    01406         return cubeTextureFilterMagPyramidalQuad_;
    01407     }
    01408
    01409     /**
    01410      * キューブ拡大2次ガウスはサポートされているか
    01411      * @return キューブ拡大2次ガウスがサポートされているならtrue
    01412      */
    01413     virtual bool supportedCubeTextureFilterMagGaussianQuad() const{
    01414         return cubeTextureFilterMagGaussianQuad_;
    01415     }
    01416
    01417     /**
    01418      * キューブミップマップポイントはサポートされているか
    01419      * @return キューブミップマップポイントがサポートされているならtrue
    01420      */
    01421     virtual bool supportedCubeTextureFilterMipmapPoint() const{
    01422         return cubeTextureFilterMipmapPoint_;
    01423     }
    01424
    01425     /**
    01426      * キューブミップマップ線形はサポートされているか
    01427      * @return キューブミップマップ線形がサポートされているならtrue
    01428      */
    01429     virtual bool supportedCubeTextureFilterMipmapLiner() const{
    01430         return cubeTextureFilterMipmapLiner_;
    01431     }
    01432
    01433     //--------------------------------------------------------------------------
    01434     /**
    01435      * ボリューム縮小ポイントはサポートされているか
    01436      * @return ボリューム縮小ポイントがサポートされているならtrue
    01437      */
    01438     virtual bool supportedVolumeTextureFilterMinPoint() const{
    01439         return volumeTextureFilterMinPoint_;
    01440     }
    01441
    01442     /**
    01443      * ボリューム縮小線形はサポートされているか
    01444      * @return ボリューム縮小線形がサポートされているならtrue
    01445      */
    01446     virtual bool supportedVolumeTextureFilterMinLiner() const{
    01447         return volumeTextureFilterMinLiner_;
    01448     }
    01449
    01450     /**
    01451      * ボリューム縮小異方性はサポートされているか
    01452      * @return ボリューム縮小異方性がサポートされているならtrue
    01453      */
    01454     virtual bool supportedVolumeTextureFilterMinAnisotropic() const{
    01455         return volumeTextureFilterMinAnisotropic_;
    01456     }
    01457
    01458     /**
    01459      * ボリューム縮小ピラミッドはサポートされているか
    01460      * @return ボリューム縮小ピラミッドがサポートされているならtrue
    01461      */
    01462     virtual bool supportedVolumeTextureFilterMinPyramidalQuad() const{
    01463         return volumeTextureFilterMinPyramidalQuad_;
    01464     }
    01465
    01466     /**
    01467      * ボリューム縮小2次ガウスはサポートされているか
    01468      * @return ボリューム縮小2次ガウスがサポートされているならtrue
    01469      */
    01470     virtual bool supportedVolumeTextureFilterMinGaussianQuad() const{
    01471         return volumeTextureFilterMinGaussianQuad_;
    01472     }
    01473
    01474     /**
    01475      * ボリューム拡大ポイントはサポートされているか
    01476      * @return ボリューム拡大ポイントがサポートされているならtrue
    01477      */
    01478     virtual bool supportedVolumeTextureFilterMagPoint() const{
    01479         return volumeTextureFilterMagPoint_;
    01480     }
    01481
    01482     /**
    01483      * ボリューム拡大線形はサポートされているか
    01484      * @return ボリューム拡大線形がサポートされているならtrue
    01485      */
    01486     virtual bool supportedVolumeTextureFilterMagLiner() const{
    01487         return volumeTextureFilterMagLiner_;
    01488     }
    01489
    01490     /**
    01491      * ボリューム拡大異方性はサポートされているか
    01492      * @return ボリューム拡大異方性がサポートされているならtrue
    01493      */
    01494     virtual bool supportedVolumeTextureFilterMagAnisotropic() const{
    01495         return volumeTextureFilterMagAnisotropic_;
    01496     }
    01497
    01498     /**
    01499      * ボリューム拡大ピラミッドはサポートされているか
    01500      * @return ボリューム拡大ピラミッドがサポートされているならtrue
    01501      */
    01502     virtual bool supportedVolumeTextureFilterMagPyramidalQuad() const{
    01503         return volumeTextureFilterMagPyramidalQuad_;
    01504     }
    01505
    01506     /**
    01507      * ボリューム拡大2次ガウスはサポートされているか
    01508      * @return ボリューム拡大2次ガウスがサポートされているならtrue
    01509      */
    01510     virtual bool supportedVolumeTextureFilterMagGaussianQuad() const{
    01511         return volumeTextureFilterMagGaussianQuad_;
    01512     }
    01513
    01514     /**
    01515      * ボリュームミップマップポイントはサポートされているか
    01516      * @return ボリュームミップマップポイントがサポートされているならtrue
    01517      */
    01518     virtual bool supportedVolumeTextureFilterMipmapPoint() const{
    01519         return volumeTextureFilterMipmapPoint_;
    01520     }
    01521
    01522     /**
    01523      * ボリュームミップマップ線形はサポートされているか
    01524      * @return ボリュームミップマップ線形がサポートされているならtrue
    01525      */
    01526     virtual bool supportedVolumeTextureFilterMipmapLiner() const{
    01527         return volumeTextureFilterMipmapLiner_;
    01528     }
    01529
    01530     //--------------------------------------------------------------------------
    01531     /**
    01532      * 頂点縮小ポイントはサポートされているか
    01533      * @return 頂点縮小ポイントがサポートされているならtrue
    01534      */
    01535     virtual bool supportedVertexTextureFilterMinPoint() const{
    01536         return vertexTextureFilterMinPoint_;
    01537     }
    01538
    01539     /**
    01540      * 頂点縮小線形はサポートされているか
    01541      * @return 頂点縮小線形がサポートされているならtrue
    01542      */
    01543     virtual bool supportedVertexTextureFilterMinLiner() const{
    01544         return vertexTextureFilterMinLiner_;
    01545     }
    01546
    01547     /**
    01548      * 頂点縮小異方性はサポートされているか
    01549      * @return 頂点縮小異方性がサポートされているならtrue
    01550      */
    01551     virtual bool supportedVertexTextureFilterMinAnisotropic() const{
    01552         return vertexTextureFilterMinAnisotropic_;
    01553     }
    01554
    01555     /**
    01556      * 頂点縮小ピラミッドはサポートされているか
    01557      * @return 頂点縮小ピラミッドがサポートされているならtrue
    01558      */
    01559     virtual bool supportedVertexTextureFilterMinPyramidalQuad() const{
    01560         return vertexTextureFilterMinPyramidalQuad_;
    01561     }
    01562
    01563     /**
    01564      * 頂点縮小2次ガウスはサポートされているか
    01565      * @return 頂点縮小2次ガウスがサポートされているならtrue
    01566      */
    01567     virtual bool supportedVertexTextureFilterMinGaussianQuad() const{
    01568         return vertexTextureFilterMinGaussianQuad_;
    01569     }
    01570
    01571     /**
    01572      * 頂点拡大ポイントはサポートされているか
    01573      * @return 頂点拡大ポイントがサポートされているならtrue
    01574      */
    01575     virtual bool supportedVertexTextureFilterMagPoint() const{
    01576         return vertexTextureFilterMagPoint_;
    01577     }
    01578
    01579     /**
    01580      * 頂点拡大線形はサポートされているか
    01581      * @return 頂点拡大線形がサポートされているならtrue
    01582      */
    01583     virtual bool supportedVertexTextureFilterMagLiner() const{
    01584         return vertexTextureFilterMagLiner_;
    01585     }
    01586
    01587     /**
    01588      * 頂点拡大異方性はサポートされているか
    01589      * @return 頂点拡大異方性がサポートされているならtrue
    01590      */
    01591     virtual bool supportedVertexTextureFilterMagAnisotropic() const{
    01592         return vertexTextureFilterMagAnisotropic_;
    01593     }
    01594
    01595     /**
    01596      * 頂点拡大ピラミッドはサポートされているか
    01597      * @return 頂点拡大ピラミッドがサポートされているならtrue
    01598      */
    01599     virtual bool supportedVertexTextureFilterMagPyramidalQuad() const{
    01600         return vertexTextureFilterMagPyramidalQuad_;
    01601     }
    01602
    01603     /**
    01604      * 頂点拡大2次ガウスはサポートされているか
    01605      * @return 頂点拡大2次ガウスがサポートされているならtrue
    01606      */
    01607     virtual bool supportedVertexTextureFilterMagGaussianQuad() const{
    01608         return vertexTextureFilterMagGaussianQuad_;
    01609     }
    01610
    01611     /**
    01612      * 頂点ミップマップポイントはサポートされているか
    01613      * @return 頂点ミップマップポイントがサポートされているならtrue
    01614      */
    01615     virtual bool supportedVertexTextureFilterMipmapPoint() const{
    01616         return vertexTextureFilterMipmapPoint_;
    01617     }
    01618
    01619     /**
    01620      * 頂点ミップマップ線形はサポートされているか
    01621      * @return 頂点ミップマップ線形がサポートされているならtrue
    01622      */
    01623     virtual bool supportedVertexTextureFilterMipmapLiner() const{
    01624         return vertexTextureFilterMipmapLiner_;
    01625     }
    01626
    01627     //--------------------------------------------------------------------------
    01628     // テクスチャステージ
    01629     //--------------------------------------------------------------------------
    01630     /**
    01631      * 最大テクスチャステージ数の取得
    01632      * @return 最大テクスチャステージ数
    01633      */
    01634     virtual u_int getMaxTextureBlendStages() const{
    01635         return maxTextureBlendStages_;
    01636     }
    01637
    01638     /**
    01639      * 最大マルチテクスチャ数の取得
    01640      * @return 最大マルチテクスチャ数
    01641      */
    01642     virtual u_int getMaxSimultaneousTextures() const{
    01643         return maxSimultaneousTextures_;
    01644     }
    01645
    01646     /**
    01647      * Disableオペレーションはサポートされているか
    01648      * @return Disableオペレーションがサポートされているならtrue
    01649      */
    01650     virtual bool supportedTextureOperationDisable() const{
    01651         return textureOperationDisable_;
    01652     }
    01653
    01654     /**
    01655      * SelectArg1オペレーションはサポートされているか
    01656      * @return SelectArg1オペレーションがサポートされているならtrue
    01657      */
    01658     virtual bool supportedTextureOperationSelectArg1() const{
    01659         return textureOperationSelectArg1_;
    01660     }
    01661
    01662     /**
    01663      * SelectArg2オペレーションはサポートされているか
    01664      * @return SelectArg2オペレーションがサポートされているならtrue
    01665      */
    01666     virtual bool supportedTextureOperationSelectArg2() const{
    01667         return textureOperationSelectArg2_;
    01668     }
    01669
    01670     /**
    01671      * Modulateオペレーションはサポートされているか
    01672      * @return Modulateオペレーションがサポートされているならtrue
    01673      */
    01674     virtual bool supportedTextureOperationModulate() const{
    01675         return textureOperationModulate_;
    01676     }
    01677
    01678     /**
    01679      * Modulate2xオペレーションはサポートされているか
    01680      * @return Modulate2xオペレーションがサポートされているならtrue
    01681      */
    01682     virtual bool supportedTextureOperationModulate2x() const{
    01683         return textureOperationModulate2x_;
    01684     }
    01685
    01686     /**
    01687      * Modulate4xオペレーションはサポートされているか
    01688      * @return Modulate4xオペレーションがサポートされているならtrue
    01689      */
    01690     virtual bool supportedTextureOperationModulate4x() const{
    01691         return textureOperationModulate4x_;
    01692     }
    01693
    01694     /**
    01695      * Addオペレーションはサポートされているか
    01696      * @return Addオペレーションがサポートされているならtrue
    01697      */
    01698     virtual bool supportedTextureOperationAdd() const{
    01699         return textureOperationAdd_;
    01700     }
    01701
    01702     /**
    01703      * AddSignedオペレーションはサポートされているか
    01704      * @return AddSignedオペレーションがサポートされているならtrue
    01705      */
    01706     virtual bool supportedTextureOperationAddSigned() const{
    01707         return textureOperationAddSigned_;
    01708     }
    01709
    01710     /**
    01711      * AddSigned2xオペレーションはサポートされているか
    01712      * @return AddSigned2xオペレーションがサポートされているならtrue
    01713      */
    01714     virtual bool supportedTextureOperationAddSigned2x() const{
    01715         return textureOperationAddSigned2x_;
    01716     }
    01717
    01718     /**
    01719      * Subtractオペレーションはサポートされているか
    01720      * @return Subtractオペレーションがサポートされているならtrue
    01721      */
    01722     virtual bool supportedTextureOperationSubtract() const{
    01723         return textureOperationSubtract_;
    01724     }
    01725
    01726     /**
    01727      * AddSmoothオペレーションはサポートされているか
    01728      * @return AddSmoothオペレーションがサポートされているならtrue
    01729      */
    01730     virtual bool supportedTextureOperationAddSmooth() const{
    01731         return textureOperationAddSmooth_;
    01732     }
    01733
    01734     /**
    01735      * BlendDiffuseAlphaオペレーションはサポートされているか
    01736      * @return BlendDiffuseAlphaオペレーションがサポートされているならtrue
    01737      */
    01738     virtual bool supportedTextureOperationBlendDiffuseAlpha() const{
    01739         return textureOperationBlendDiffuseAlpha_;
    01740     }
    01741
    01742     /**
    01743      * BlendTextureAlphaオペレーションはサポートされているか
    01744      * @return BlendTextureAlphaオペレーションがサポートされているならtrue
    01745      */
    01746     virtual bool supportedTextureOperationBlendTextureAlpha() const{
    01747         return textureOperationBlendTextureAlpha_;
    01748     }
    01749
    01750     /**
    01751      * BlendFactorAlphaオペレーションはサポートされているか
    01752      * @return BlendFactorAlphaオペレーションがサポートされているならtrue
    01753      */
    01754     virtual bool supportedTextureOperationBlendFactorAlpha() const{
    01755         return textureOperationBlendFactorAlpha_;
    01756     }
    01757
    01758     /**
    01759      * BlendTextureAlphaPMオペレーションはサポートされているか
    01760      * @return BlendTextureAlphaPMオペレーションがサポートされているならtrue
    01761      */
    01762     virtual bool supportedTextureOperationBlendTextureAlphaPM() const{
    01763         return textureOperationBlendTextureAlphaPM_;
    01764     }
    01765
    01766     /**
    01767      * BlendCurrentAlphaオペレーションはサポートされているか
    01768      * @return BlendCurrentAlphaオペレーションがサポートされているならtrue
    01769      */
    01770     virtual bool supportedTextureOperationBlendCurrentAlpha() const{
    01771         return textureOperationBlendCurrentAlpha_;
    01772     }
    01773
    01774     /**
    01775      * PreModulateオペレーションはサポートされているか
    01776      * @return PreModulateオペレーションがサポートされているならtrue
    01777      */
    01778     virtual bool supportedTextureOperationPreModulate() const{
    01779         return textureOperationPreModulate_;
    01780     }
    01781
    01782     /**
    01783      * ModulateAlphaAddColorオペレーションはサポートされているか
    01784      * @return ModulateAlphaAddColorオペレーションがサポートされているならtrue
    01785      */
    01786     virtual bool supportedTextureOperationModulateAlphaAddColor() const{
    01787         return textureOperationModulateAlphaAddColor_;
    01788     }
    01789
    01790     /**
    01791      * ModulateColorAddAlphaオペレーションはサポートされているか
    01792      * @return ModulateColorAddAlphaオペレーションがサポートされているならtrue
    01793      */
    01794     virtual bool supportedTextureOperationModulateColorAddAlpha() const{
    01795         return textureOperationModulateColorAddAlpha_;
    01796     }
    01797
    01798     /**
    01799      * ModulateInvAlphaAddColorオペレーションはサポートされているか
    01800      * @return ModulateInvAlphaAddColorオペレーションがサポートされているならtrue
    01801      */
    01802     virtual bool supportedTextureOperationModulateInvAlphaAddColor() const{
    01803         return textureOperationModulateInvAlphaAddColor_;
    01804     }
    01805
    01806     /**
    01807      * ModulateInvColorAddAlphaオペレーションはサポートされているか
    01808      * @return ModulateInvColorAddAlphaオペレーションがサポートされているならtrue
    01809      */
    01810     virtual bool supportedTextureOperationModulateInvColorAddAlpha() const{
    01811         return textureOperationModulateInvColorAddAlpha_;
    01812     }
    01813
    01814     /**
    01815      * BumpEnvMapオペレーションはサポートされているか
    01816      * @return BumpEnvMapオペレーションがサポートされているならtrue
    01817      */
    01818     virtual bool supportedTextureOperationBumpEnvMap() const{
    01819         return textureOperationBumpEnvMap_;
    01820     }
    01821
    01822     /**
    01823      * BumpEnvMapLuminanceオペレーションはサポートされているか
    01824      * @return BumpEnvMapLuminanceオペレーションがサポートされているならtrue
    01825      */
    01826     virtual bool supportedTextureOperationBumpEnvMapLuminance() const{
    01827         return textureOperationBumpEnvMapLuminance_;
    01828     }
    01829
    01830     /**
    01831      * DotProduct3オペレーションはサポートされているか
    01832      * @return DotProduct3オペレーションがサポートされているならtrue
    01833      */
    01834     virtual bool supportedTextureOperationDotProduct3() const{
    01835         return textureOperationDotProduct3_;
    01836     }
    01837
    01838     /**
    01839      * MultiplyAddオペレーションはサポートされているか
    01840      * @return MultiplyAddオペレーションがサポートされているならtrue
    01841      */
    01842     virtual bool supportedTextureOperationMultiplyAdd() const{
    01843         return textureOperationMultiplyAdd_;
    01844     }
    01845
    01846     /**
    01847      * Lerpオペレーションはサポートされているか
    01848      * @return Lerpオペレーションがサポートされているならtrue
    01849      */
    01850     virtual bool supportedTextureOperationLerp() const{
    01851         return textureOperationLerp_;
    01852     }
    01853
    01854     //--------------------------------------------------------------------------
    01855     // 比較
    01856     //--------------------------------------------------------------------------
    01857     /**
    01858      * Z比較Neverはサポートされているか
    01859      * @return Z比較Neverがサポートされているならtrue
    01860      */
    01861     virtual bool supportedZCompareNever() const{ return zCompareNever_; }
    01862
    01863     /**
    01864      * Z比較Lessはサポートされているか
    01865      * @return Z比較Lessがサポートされているならtrue
    01866      */
    01867     virtual bool supportedZCompareLess() const{ return zCompareLess_; }
    01868
    01869     /**
    01870      * Z比較Equalはサポートされているか
    01871      * @return Z比較Equalがサポートされているならtrue
    01872      */
    01873     virtual bool supportedZCompareEqual() const{ return zCompareEqual_; }
    01874
    01875     /**
    01876      * Z比較LessEqualはサポートされているか
    01877      * @return Z比較LessEqualがサポートされているならtrue
    01878      */
    01879     virtual bool supportedZCompareLessEqual() const{
    01880         return zCompareLessEqual_;
    01881     }
    01882
    01883     /**
    01884      * Z比較Greaterはサポートされているか
    01885      * @return Z比較Greaterがサポートされているならtrue
    01886      */
    01887     virtual bool supportedZCompareGreater() const{ return zCompareGreater_; }
    01888
    01889     /**
    01890      * Z比較NotEqualはサポートされているか
    01891      * @return がZ比較NotEqualサポートされているならtrue
    01892      */
    01893     virtual bool supportedZCompareNotEqual() const{ return zCompareNotEqual_; }
    01894
    01895     /**
    01896      * Z比較GreaterEqualはサポートされているか
    01897      * @return Z比較GreaterEqualがサポートされているならtrue
    01898      */
    01899     virtual bool supportedZCompareGreaterEqual() const{
    01900         return zCompareGreaterEqual_;
    01901     }
    01902
    01903     /**
    01904      * Z比較Alwaysはサポートされているか
    01905      * @return Z比較Alwaysがサポートされているならtrue
    01906      */
    01907     virtual bool supportedZCompareAlways() const{ return zCompareAlways_; }
    01908
    01909     //--------------------------------------------------------------------------
    01910     /**
    01911      * ステンシルKeepはサポートされているか
    01912      * @return ステンシルKeepがサポートされているならtrue
    01913      */
    01914     virtual bool supportedStencilKeep() const{ return stencilKeep_; }
    01915
    01916     /**
    01917      * ステンシルZeroはサポートされているか
    01918      * @return ステンシルZeroがサポートされているならtrue
    01919      */
    01920     virtual bool supportedStencilZero() const{ return stencilZero_; }
    01921
    01922     /**
    01923      * ステンシルReplaceはサポートされているか
    01924      * @return ステンシルReplaceがサポートされているならtrue
    01925      */
    01926     virtual bool supportedStencilReplace() const{ return stencilReplace_; }
    01927
    01928     /**
    01929      * ステンシルIncrSatはサポートされているか
    01930      * @return ステンシルIncrSatがサポートされているならtrue
    01931      */
    01932     virtual bool supportedStencilIncrSat() const{ return stencilIncrSat_; }
    01933
    01934     /**
    01935      * ステンシルDecrSatはサポートされているか
    01936      * @return ステンシルDecrSatがサポートされているならtrue
    01937      */
    01938     virtual bool supportedStencilDecrSat() const{ return stencilDecrSat_; }
    01939
    01940     /**
    01941      * ステンシルInvertはサポートされているか
    01942      * @return ステンシルInvertがサポートされているならtrue
    01943      */
    01944     virtual bool supportedStencilInvert() const{ return stencilInvert_; }
    01945
    01946     /**
    01947      * ステンシルIncrはサポートされているか
    01948      * @return ステンシルIncrがサポートされているならtrue
    01949      */
    01950     virtual bool supportedStencilIncr() const{ return stencilIncr_; }
    01951
    01952     /**
    01953      * ステンシルDecrはサポートされているか
    01954      * @return ステンシルDecrがサポートされているならtrue
    01955      */
    01956     virtual bool supportedStencilDecr() const{ return stencilDecr_; }
    01957
    01958     /**
    01959      * ステンシルTwoSidedはサポートされているか
    01960      * @return ステンシルTwoSidedがサポートされているならtrue
    01961      */
    01962     virtual bool supportedStencilTwoSided() const{ return stencilTwoSided_; }
    01963
    01964     //--------------------------------------------------------------------------
    01965     /**
    01966      * アルファ比較Neverはサポートされているか
    01967      * @return アルファ比較Neverがサポートされているならtrue
    01968      */
    01969     virtual bool supportedAlphaCompareNever() const{
    01970         return alphaCompareNever_;
    01971     }
    01972
    01973     /**
    01974      * アルファ比較Lessはサポートされているか
    01975      * @return アルファ比較Lessがサポートされているならtrue
    01976      */
    01977     virtual bool supportedAlphaCompareLess() const{ return alphaCompareLess_; }
    01978
    01979     /**
    01980      * アルファ比較Equalはサポートされているか
    01981      * @return アルファ比較Equalがサポートされているならtrue
    01982      */
    01983     virtual bool supportedAlphaCompareEqual() const{
    01984         return alphaCompareEqual_;
    01985     }
    01986
    01987     /**
    01988      * アルファ比較LessEqualはサポートされているか
    01989      * @return アルファ比較LessEqualがサポートされているならtrue
    01990      */
    01991     virtual bool supportedAlphaCompareLessEqual() const{
    01992         return alphaCompareLessEqual_;
    01993     }
    01994
    01995     /**
    01996      * アルファ比較Greaterはサポートされているか
    01997      * @return アルファ比較Greaterがサポートされているならtrue
    01998      */
    01999     virtual bool supportedAlphaCompareGreater() const{
    02000         return alphaCompareGreater_;
    02001     }
    02002
    02003     /**
    02004      * アルファ比較NotEqualはサポートされているか
    02005      * @return がアルファ比較NotEqualサポートされているならtrue
    02006      */
    02007     virtual bool supportedAlphaCompareNotEqual() const{
    02008         return alphaCompareNotEqual_;
    02009     }
    02010
    02011     /**
    02012      * アルファ比較GreaterEqualはサポートされているか
    02013      * @return アルファ比較GreaterEqualがサポートされているならtrue
    02014      */
    02015     virtual bool supportedAlphaCompareGreaterEqual() const{
    02016         return alphaCompareGreaterEqual_;
    02017     }
    02018
    02019     /**
    02020      * アルファ比較Alwaysはサポートされているか
    02021      * @return アルファ比較Alwaysがサポートされているならtrue
    02022      */
    02023     virtual bool supportedAlphaCompareAlways() const{
    02024         return alphaCompareAlways_;
    02025     }
    02026
    02027     //--------------------------------------------------------------------------
    02028     // ブレンディング
    02029     //--------------------------------------------------------------------------
    02030     /**
    02031      * ソースZeroはサポートされているか
    02032      * @return ソースZeroがサポートされているならtrue
    02033      */
    02034     virtual bool supportedBlendSourceZero() const{ return blendSourceZero_; }
    02035
    02036     /**
    02037      * ソースOneはサポートされているか
    02038      * @return ソースOneがサポートされているならtrue
    02039      */
    02040     virtual bool supportedBlendSourceOne() const{ return blendSourceOne_; }
    02041
    02042     /**
    02043      * ソースSrcColorはサポートされているか
    02044      * @return ソースSrcColorがサポートされているならtrue
    02045      */
    02046     virtual bool supportedBlendSourceSrcColor() const{
    02047         return blendSourceSrcColor_;
    02048     }
    02049
    02050     /**
    02051      * ソースInvSrcColorはサポートされているか
    02052      * @return ソースInvSrcColorがサポートされているならtrue
    02053      */
    02054     virtual bool supportedBlendSourceInvSrcColor() const{
    02055         return blendSourceInvSrcColor_;
    02056     }
    02057
    02058     /**
    02059      * ソースSrcAlphaはサポートされているか
    02060      * @return ソースSrcAlphaがサポートされているならtrue
    02061      */
    02062     virtual bool supportedBlendSourceSrcAlpha() const{
    02063         return blendSourceSrcAlpha_;
    02064     }
    02065
    02066     /**
    02067      * ソースInvSrcAlphaはサポートされているか
    02068      * @return ソースInvSrcAlphaがサポートされているならtrue
    02069      */
    02070     virtual bool supportedBlendSourceInvSrcAlpha() const{
    02071         return blendSourceInvSrcAlpha_;
    02072     }
    02073
    02074     /**
    02075      * ソースDestAlphaはサポートされているか
    02076      * @return ソースDestAlphaがサポートされているならtrue
    02077      */
    02078     virtual bool supportedBlendSourceDestAlpha() const{
    02079         return blendSourceDestAlpha_;
    02080     }
    02081
    02082     /**
    02083      * ソースInvDestAlphaはサポートされているか
    02084      * @return ソースInvDestAlphaがサポートされているならtrue
    02085      */
    02086     virtual bool supportedBlendSourceInvDestAlpha() const{
    02087         return blendSourceInvDestAlpha_;
    02088     }
    02089
    02090     /**
    02091      * ソースDestColorはサポートされているか
    02092      * @return ソースDestColorがサポートされているならtrue
    02093      */
    02094     virtual bool supportedBlendSourceDestColor() const{
    02095         return blendSourceDestColor_;
    02096     }
    02097
    02098     /**
    02099      * ソースInvDestColorはサポートされているか
    02100      * @return ソースInvDestColorがサポートされているならtrue
    02101      */
    02102     virtual bool supportedBlendSourceInvDestColor() const{
    02103         return blendSourceInvDestColor_;
    02104     }
    02105
    02106     /**
    02107      * ソースSrcAlphaSatはサポートされているか
    02108      * @return ソースSrcAlphaSatがサポートされているならtrue
    02109      */
    02110     virtual bool supportedBlendSourceSrcAlphaSat() const{
    02111         return blendSourceSrcAlphaSat_;
    02112     }
    02113
    02114     /**
    02115      * ソースBothSrcAlphaはサポートされているか
    02116      * @return ソースBothSrcAlphaがサポートされているならtrue
    02117      */
    02118     virtual bool supportedBlendSourceBothSrcAlpha() const{
    02119         return blendSourceBothSrcAlpha_;
    02120     }
    02121
    02122     /**
    02123      * ソースBothInvSrcAlphaはサポートされているか
    02124      * @return ソースBothInvSrcAlphaがサポートされているならtrue
    02125      */
    02126     virtual bool supportedBlendSourceBothInvSrcAlpha() const{
    02127         return blendSourceBothInvSrcAlpha_;
    02128     }
    02129
    02130     /**
    02131      * ソースBlendFactorはサポートされているか
    02132      * @return ソースBlendFactorがサポートされているならtrue
    02133      */
    02134     virtual bool supportedBlendSourceBlendFactor() const{
    02135         return blendSourceBlendFactor_;
    02136     }
    02137
    02138     //--------------------------------------------------------------------------
    02139     /**
    02140      * デスティネーションZeroはサポートされているか
    02141      * @return デスティネーションZeroがサポートされているならtrue
    02142      */
    02143     virtual bool supportedBlendDestinationZero() const{
    02144         return blendDestinationZero_;
    02145     }
    02146
    02147     /**
    02148      * デスティネーションOneはサポートされているか
    02149      * @return デスティネーションOneがサポートされているならtrue
    02150      */
    02151     virtual bool supportedBlendDestinationOne() const{
    02152         return blendDestinationOne_;
    02153     }
    02154
    02155     /**
    02156      * デスティネーションSrcColorはサポートされているか
    02157      * @return デスティネーションSrcColorがサポートされているならtrue
    02158      */
    02159     virtual bool supportedBlendDestinationSrcColor() const{
    02160         return blendDestinationSrcColor_;
    02161     }
    02162
    02163     /**
    02164      * デスティネーションInvSrcColorはサポートされているか
    02165      * @return デスティネーションInvSrcColorがサポートされているならtrue
    02166      */
    02167     virtual bool supportedBlendDestinationInvSrcColor() const{
    02168         return blendDestinationInvSrcColor_;
    02169     }
    02170
    02171     /**
    02172      * デスティネーションSrcAlphaはサポートされているか
    02173      * @return デスティネーションSrcAlphaがサポートされているならtrue
    02174      */
    02175     virtual bool supportedBlendDestinationSrcAlpha() const{
    02176         return blendDestinationSrcAlpha_;
    02177     }
    02178
    02179     /**
    02180      * デスティネーションInvSrcAlphaはサポートされているか
    02181      * @return デスティネーションInvSrcAlphaがサポートされているならtrue
    02182      */
    02183     virtual bool supportedBlendDestinationInvSrcAlpha() const{
    02184         return blendDestinationInvSrcAlpha_;
    02185     }
    02186
    02187     /**
    02188      * デスティネーションDestAlphaはサポートされているか
    02189      * @return デスティネーションDestAlphaがサポートされているならtrue
    02190      */
    02191     virtual bool supportedBlendDestinationDestAlpha() const{
    02192         return blendDestinationDestAlpha_;
    02193     }
    02194
    02195     /**
    02196      * デスティネーションInvDestAlphaはサポートされているか
    02197      * @return デスティネーションInvDestAlphaがサポートされているならtrue
    02198      */
    02199     virtual bool supportedBlendDestinationInvDestAlpha() const{
    02200         return blendDestinationInvDestAlpha_;
    02201     }
    02202
    02203     /**
    02204      * デスティネーションDestColorはサポートされているか
    02205      * @return デスティネーションDestColorがサポートされているならtrue
    02206      */
    02207     virtual bool supportedBlendDestinationDestColor() const{
    02208         return blendDestinationDestColor_;
    02209     }
    02210
    02211     /**
    02212      * デスティネーションInvDestColorはサポートされているか
    02213      * @return デスティネーションInvDestColorがサポートされているならtrue
    02214      */
    02215     virtual bool supportedBlendDestinationInvDestColor() const{
    02216         return blendDestinationInvDestColor_;
    02217     }
    02218
    02219     /**
    02220      * デスティネーションSrcAlphaSatはサポートされているか
    02221      * @return デスティネーションSrcAlphaSatがサポートされているならtrue
    02222      */
    02223     virtual bool supportedBlendDestinationSrcAlphaSat() const{
    02224         return blendDestinationSrcAlphaSat_;
    02225     }
    02226
    02227     /**
    02228      * デスティネーションBothSrcAlphaはサポートされているか
    02229      * @return デスティネーションBothSrcAlphaがサポートされているならtrue
    02230      */
    02231     virtual bool supportedBlendDestinationBothSrcAlpha() const{
    02232         return blendDestinationBothSrcAlpha_;
    02233     }
    02234
    02235     /**
    02236      * デスティネーションBothInvSrcAlphaはサポートされているか
    02237      * @return デスティネーションBothInvSrcAlphaがサポートされているならtrue
    02238      */
    02239     virtual bool supportedBlendDestinationBothInvSrcAlpha() const{
    02240         return blendDestinationBothInvSrcAlpha_;
    02241     }
    02242
    02243     /**
    02244      * デスティネーションBlendFactorはサポートされているか
    02245      * @return デスティネーションBlendFactorがサポートされているならtrue
    02246      */
    02247     virtual bool supportedBlendDestinationBlendFactor() const{
    02248         return blendDestinationBlendFactor_;
    02249     }
    02250
    02251     //--------------------------------------------------------------------------
    02252     // ラスタライズ
    02253     //--------------------------------------------------------------------------
    02254     /**
    02255      * アンチエイリアス拡張の取得
    02256      * @return アンチエイリアス拡張
    02257      */
    02258     virtual float getExtentsAdjust() const{ return extentsAdjust_; }
    02259
    02260     /**
    02261      * ディザはサポートされているか
    02262      * @return ディザがサポートされているならtrue
    02263      */
    02264     virtual bool supportedRasterDither() const{ return rasterDither_; }
    02265
    02266     /**
    02267      * Zテストはサポートされているか
    02268      * @return Zテストがサポートされているならtrue
    02269      */
    02270     virtual bool supportedRasterZTest() const{ return rasterZTest_; }
    02271
    02272     /**
    02273      * 頂点フォグはサポートされているか
    02274      * @return 頂点フォグがサポートされているならtrue
    02275      */
    02276     virtual bool supportedRasterFogVertex() const{ return rasterFogVertex_; }
    02277
    02278     /**
    02279      * フォグテーブルはサポートされているか
    02280      * @return フォグテーブルがサポートされているならtrue
    02281      */
    02282     virtual bool supportedRasterFogTable() const{ return rasterFogTable_; }
    02283
    02284     /**
    02285      * ミップマップバイアスはサポートされているか
    02286      * @return ミップマップバイアスがサポートされているならtrue
    02287      */
    02288     virtual bool supportedRasterMipmapLODBias() const{
    02289         return rasterMipmapLODBias_;
    02290     }
    02291
    02292     /**
    02293      * 隠れ面消去はサポートされているか
    02294      * @return 隠れ面消去がサポートされているならtrue
    02295      */
    02296     virtual bool supportedRasterZBufferLessHSR() const{
    02297         return rasterZBufferLessHSR_;
    02298     }
    02299
    02300     /**
    02301      * レンジフォグはサポートされているか
    02302      * @return レンジフォグがサポートされているならtrue
    02303      */
    02304     virtual bool supportedRasterFogRange() const{ return rasterFogRange_; }
    02305
    02306     /**
    02307      * 異方性フィルタリングはサポートされているか
    02308      * @return 異方性フィルタリングがサポートされているならtrue
    02309      */
    02310     virtual bool supportedRasterAnisotropy() const{ return rasterAnisotropy_; }
    02311
    02312     /**
    02313      * Wバッファはサポートされているか
    02314      * @return Wバッファがサポートされているならtrue
    02315      */
    02316     virtual bool supportedRasterWBuffer() const{ return rasterWBuffer_; }
    02317
    02318     /**
    02319      * Wフォグはサポートされているか
    02320      * @return Wフォグがサポートされているならtrue
    02321      */
    02322     virtual bool supportedRasterWFog() const{ return rasterWFog_; }
    02323
    02324     /**
    02325      * Zフォグはサポートされているか
    02326      * @return Zフォグがサポートされているならtrue
    02327      */
    02328     virtual bool supportedRasterZFog() const{ return rasterZFog_; }
    02329
    02330     /**
    02331      * 色パースペクティブ補正はサポートされているか
    02332      * @return 色パースペクティブ補正がサポートされているならtrue
    02333      */
    02334     virtual bool supportedRasterColorPerspective() const{
    02335         return rasterColorPerspective_;
    02336     }
    02337
    02338     /**
    02339      * シザーテストはサポートされているか
    02340      * @return シザーテストがサポートされているならtrue
    02341      */
    02342     virtual bool supportedRasterScissorTest() const{
    02343         return rasterScissorTest_;
    02344     }
    02345
    02346     /**
    02347      * スロープスケール深度バイアスはサポートされているか
    02348      * @return スロープスケール深度バイアスがサポートされているならtrue
    02349      */
    02350     virtual bool supportedRasterSlopeScaleDepthBias() const{
    02351         return rasterSlopeScaleDepthBias_;
    02352     }
    02353
    02354     /**
    02355      * 深度バイアスはサポートされているか
    02356      * @return 深度バイアスがサポートされているならtrue
    02357      */
    02358     virtual bool supportedRasterDepthBias() const{ return rasterDepthBias_; }
    02359
    02360     /**
    02361      * マルチサンプル切り替えはサポートされているか
    02362      * @return マルチサンプル切り替えがサポートされているならtrue
    02363      */
    02364     virtual bool supportedRasterMultiSampleToggle() const{
    02365         return rasterMultiSampleToggle_;
    02366     }
    02367
    02368     //--------------------------------------------------------------------------
    02369     // 頂点シェーダ
    02370     //--------------------------------------------------------------------------
    02371     /**
    02372      * 頂点シェーダメジャーバージョンの取得
    02373      * @return 頂点シェーダメジャーバージョン
    02374      */
    02375     virtual u_int getVertexShaderMajorVersion() const{
    02376         return vertexShaderMajorVersion_;
    02377     }
    02378
    02379     /**
    02380      * 頂点シェーダマイナーバージョンの取得
    02381      * @return 頂点シェーダマイナーバージョン
    02382      */
    02383     virtual u_int getVertexShaderMinorVersion() const{
    02384         return vertexShaderMinorVersion_;
    02385     }
    02386
    02387     /**
    02388      * 最大頂点シェーダ定数の取得
    02389      * @return 最大頂点シェーダ定数
    02390      */
    02391     virtual u_int getMaxVertexShaderConst() const{
    02392         return maxVertexShaderConst_;
    02393     }
    02394
    02395     /**
    02396      * 最大ストリームストライド数の取得
    02397      * @return 最大ストリームストライド数
    02398      */
    02399     virtual u_int getMaxStreamStride() const{ return maxStreamStride_; }
    02400
    02401     /**
    02402      * 最大命令実行数数の取得
    02403      * @return 最大命令実行数
    02404      */
    02405     virtual u_int getMaxVShaderInstructionsExecuted() const{
    02406         return maxVShaderInstructionsExecuted_;
    02407     }
    02408
    02409     /**
    02410      * 最大命令スロット数の取得
    02411      * @return 最大命令スロット数
    02412      */
    02413     virtual u_int getMaxVertexShader30InstructionSlots() const{
    02414         return maxVertexShader30InstructionSlots_;
    02415     }
    02416
    02417     /**
    02418      * 動的フローネストレベルの取得
    02419      * @return 動的フローネストレベル
    02420      */
    02421     virtual u_int getVertexShaderDynamicFlowControlDepth() const{
    02422         return vertexShaderDynamicFlowControlDepth_;
    02423     }
    02424
    02425     /**
    02426      * テンポラリ数の取得
    02427      * @return テンポラリ数
    02428      */
    02429     virtual u_int getVertexShaderNumTemps() const{
    02430         return vertexShaderNumTemps_;
    02431     }
    02432
    02433     /**
    02434      * 静的フローネストレベルの取得
    02435      * @return 静的フローネストレベル
    02436      */
    02437     virtual u_int getVertexShaderStaticFlowControlDepth() const{
    02438         return vertexShaderStaticFlowControlDepth_;
    02439     }
    02440
    02441     /**
    02442      * プレディケーション命令はサポートされているか
    02443      * @return プレディケーション命令がサポートされているならtrue
    02444      */
    02445     virtual bool supportedVertexShaderPredication() const{
    02446         return vertexShaderPredication_;
    02447     }
    02448
    02449     //--------------------------------------------------------------------------
    02450     // ピクセルシェーダ
    02451     //--------------------------------------------------------------------------
    02452     /**
    02453      * ピクセルシェーダメジャーバージョンの取得
    02454      * @return ピクセルシェーダメジャーバージョン
    02455      */
    02456     virtual u_int getPixelShaderMajorVersion() const{
    02457         return pixelShaderMajorVersion_;
    02458     }
    02459
    02460     /**
    02461      * ピクセルシェーダマイナーバージョンの取得
    02462      * @return ピクセルシェーダマイナーバージョン
    02463      */
    02464     virtual u_int getPixelShaderMinorVersion() const{
    02465         return pixelShaderMinorVersion_;
    02466     }
    02467
    02468     /**
    02469      * ピクセルシェーダ1x最大値の取得
    02470      * @return ピクセルシェーダ1x最大値
    02471      */
    02472     virtual float getPixelShader1xMaxValue() const{
    02473         return pixelShader1xMaxValue_;
    02474     }
    02475
    02476     /**
    02477      * 最大命令実行数数の取得
    02478      * @return 最大命令実行数
    02479      */
    02480     virtual u_int getMaxPShaderInstructionsExecuted() const{
    02481         return maxPShaderInstructionsExecuted_;
    02482     }
    02483
    02484     /**
    02485      * 最大命令スロット数の取得
    02486      * @return 最大命令スロット数
    02487      */
    02488     virtual u_int getMaxPixelShader30InstructionSlots() const{
    02489         return maxPixelShader30InstructionSlots_;
    02490     }
    02491
    02492     /**
    02493      * 動的フローネストレベルの取得
    02494      * @return 動的フローネストレベル
    02495      */
    02496     virtual u_int getPixelShaderDynamicFlowControlDepth() const{
    02497         return pixelShaderDynamicFlowControlDepth_;
    02498     }
    02499
    02500     /**
    02501      * テンポラリ数の取得
    02502      * @return テンポラリ数
    02503      */
    02504     virtual u_int getPixelShaderNumTemps() const{
    02505         return pixelShaderNumTemps_;
    02506     }
    02507
    02508     /**
    02509      * 静的フローネストレベルの取得
    02510      * @return 静的フローネストレベル
    02511      */
    02512     virtual u_int getPixelShaderStaticFlowControlDepth() const{
    02513         return pixelShaderStaticFlowControlDepth_;
    02514     }
    02515
    02516     /**
    02517      * 命令スロット数の取得
    02518      * @return 命令スロット数
    02519      */
    02520     virtual u_int getPixelShaderNumInstructionSlots() const{
    02521         return pixelShaderNumInstructionSlots_;
    02522     }
    02523
    02524     /**
    02525      * 任意の入れ替えはサポートされているか
    02526      * @return 任意の入れ替えがサポートされているならtrue
    02527      */
    02528     virtual bool supportedPixelShaderArbitrarySwizzle() const{
    02529         return pixelShaderArbitrarySwizzle_;
    02530     }
    02531
    02532     /**
    02533      * グラデーション命令はサポートされているか
    02534      * @return グラデーション命令がサポートされているならtrue
    02535      */
    02536     virtual bool supportedPixelShaderGradientInstructions() const{
    02537         return pixelShaderGradientInstructions_;
    02538     }
    02539
    02540     /**
    02541      * プレディケーション命令はサポートされているか
    02542      * @return プレディケーション命令がサポートされているならtrue
    02543      */
    02544     virtual bool supportedPixelShaderPredication() const{
    02545         return pixelShaderPredication_;
    02546     }
    02547
    02548     /**
    02549      * 従属読み込み無制限はサポートされているか
    02550      * @return 従属読み込み無制限がサポートされているならtrue
    02551      */
    02552     virtual bool supportedPixelShaderNoDependentReadLimit() const{
    02553         return pixelShaderNoDependentReadLimit_;
    02554     }
    02555
    02556     /**
    02557      * tex命令無制限はサポートされているか
    02558      * @return tex命令無制限がサポートされているならtrue
    02559      */
    02560     virtual bool supportedPixelShaderNoTexnstructionLimit() const{
    02561         return pixelShaderNoTexnstructionLimit_;
    02562     }
    02563
    02564     //--------------------------------------------------------------------------
    02565 protected:
    02566     /**
    02567      * コンストラクタ
    02568      */
    02569     GraphicsDeviceCapacity();
    02570
    02571     /**
    02572      * デストラクタ
    02573      */
    02574     virtual ~GraphicsDeviceCapacity();
    02575
    02576     /**
    02577      * デバイスがリセットされた
    02578      * @param direct3DDevice Direct3Dデバイス
    02579      */
    02580     virtual void deviceReset(Direct3DDevice* direct3DDevice);
    02581
    02582     /**
    02583      * サポート文字列の取得
    02584      * @param supported サポートフラグ
    02585      * @return 文字列
    02586      */
    02587     virtual String supportedString(bool supported) const{
    02588         if(supported){ return "○\n"; }
    02589         return "×\n";
    02590     }
    02591
    02592     //--------------------------------------------------------------------------
    02593 private:
    02594     // コピーコンストラクタの隠蔽
    02595     GraphicsDeviceCapacity(const GraphicsDeviceCapacity& copy);
    02596
    02597     // 代入コピーの隠蔽
    02598     void operator =(const GraphicsDeviceCapacity& copy);
    02599
    02600     // デバイス能力
    02601     D3DCapacity capacity_;
    02602
    02603     // インスタンス
    02604     static GraphicsDeviceCapacity* instance_;
    02605
    02606     //--------------------------------------------------------------------------
    02607     // デバイス情報
    02608     //--------------------------------------------------------------------------
    02609     // デバイス名
    02610     String deviceName_;
    02611     // ドライバ名
    02612     String driverName_;
    02613     // デバイス番号
    02614     int deviceOrdinal_;
    02615     // デバイスタイプ
    02616     D3DDEVTYPE deviceType_;
    02617     // ウィンドウモードか
    02618     bool isWindowed_;
    02619     // 頂点プロセスタイプ
    02620     VertexProcessingType vertexProcessingType_;
    02621     // アダプタフォーマット
    02622     D3DFORMAT adapterFormat_;
    02623     // バックバッファフォーマット
    02624     D3DFORMAT backBufferFormat_;
    02625     // バックバッファサイズ
    02626     DimensionI backBufferSize_;
    02627     // リフレッシュレート
    02628     int refreshRate_;
    02629     // 深度、ステンシルバッファは有効か
    02630     bool depthStencilEnabled_;
    02631     // 深度、ステンシルフォーマット
    02632     D3DFORMAT depthStencilFormat_;
    02633     // プレゼンテーション間隔
    02634     u_int presentationInterval_;
    02635     // マルチサンプルタイプ
    02636     D3DMULTISAMPLE_TYPE multiSampleType_;
    02637     // マルチサンプルクォリティ
    02638     u_int multiSampleQuality_;
    02639
    02640     //--------------------------------------------------------------------------
    02641     // デバイス能力
    02642     //--------------------------------------------------------------------------
    02643     // マルチレンダーターゲット数
    02644     u_int numSimultaneousRTs_;
    02645     // システムメモリで実行
    02646     bool executeSystemMemory_;
    02647     // ビデオメモリで実行
    02648     bool executeVideoMemory_;
    02649     // システムメモリ上のTL頂点
    02650     bool tlVertexSystemMemory_;
    02651     // ビデオメモリ上のTL頂点
    02652     bool tlVertexVideoMemory_;
    02653     // システムメモリ上のテクスチャ
    02654     bool textureSystemMemory_;
    02655     // ビデオメモリ上のテクスチャ
    02656     bool textureVideoMemory_;
    02657     // TL頂点の描画
    02658     bool drawPrimTlVertex_;
    02659     // フリップ後のレンダリング
    02660     bool canRenderAfterFlip_;
    02661     // 非ローカルビデオメモリ
    02662     bool textureNonLocalVidedMemory_;
    02663     // DrawPrivitives2
    02664     bool drawPrimitives2_;
    02665     // 独立したテクスチャメモリプール
    02666     bool separateTextureMemories_;
    02667     // DrawPrimitives2EX
    02668     bool drawPrimitives2EX_;
    02669     // ハードウェアT&L
    02670     bool hwTransformAndLight_;
    02671     // システムからビデオへのBLT
    02672     bool canBltSystemToNonLocal_;
    02673     // ハードウェアラスタライズ
    02674     bool hwRasterization_;
    02675     // ピュアデバイス
    02676     bool pureDevice_;
    02677     // ベジェ、Bスプライン
    02678     bool quinticRtPatches_;
    02679     // 矩形、三角形パッチ
    02680     bool rtPatches_;
    02681     // 効率的なハンドル0パッチ
    02682     bool rtPatchHanldeZero_;
    02683     // Nパッチ
    02684     bool nPatches_;
    02685     // プレゼンテーション間隔即時
    02686     bool presentationIntervalImmediate_;
    02687     // プレゼンテーション間隔1垂直同期
    02688     bool presentationIntervalOne_;
    02689     // プレゼンテーション間隔2垂直同期
    02690     bool presentationIntervalTwo_;
    02691     // プレゼンテーション間隔3垂直同期
    02692     bool presentationIntervalThree_;
    02693     // プレゼンテーション間隔4垂直同期
    02694     bool presentationIntervalFour_;
    02695     // ハードウェアカーソル
    02696     bool cursorColor_;
    02697     // 低解像度ハードウェアカーソル
    02698     bool cursorLowRes_;
    02699     // StretchRectMinPointフィルタ
    02700     bool stretchRectMinPoint_;
    02701     // StretchRectMagPointフィルタ
    02702     bool stretchRectMagPoint_;
    02703     // StretchRectMinLinearフィルタ
    02704     bool stretchRectMinLinear_;
    02705     // StretchRectMagLinearフィルタ
    02706     bool stretchRectMagLinear_;
    02707
    02708     //--------------------------------------------------------------------------
    02709     // デバイスその他
    02710     //--------------------------------------------------------------------------
    02711     // マスターアダプタ番号
    02712     u_int masterAdapterOrdinal_;
    02713     // グループ内のアダプタ番号
    02714     u_int adapterOrdinalInGroup_;
    02715     // グループのアダプタ数
    02716     u_int numberOfAdaptersInGroup_;
    02717     // Zマスク
    02718     bool maskZ_;
    02719     // カリング無し
    02720     bool cullNone_;
    02721     // 時計回りカリング
    02722     bool cullCW_;
    02723     // 反時計回りカリング
    02724     bool cullCCW_;
    02725     // カラーチャンネル書き込み
    02726     bool colorWriteEnable_;
    02727     // 正確なポイントクリップ
    02728     bool clipPlaneScaledPoints_;
    02729     // 頂点クリップ
    02730     bool clipTlVerts_;
    02731     // テンポラリテクスチャ引数
    02732     bool tssArgTemp_;
    02733     // アルファブレンディング
    02734     bool blendOp_;
    02735     // ヌルリファレンス
    02736     bool nullReference_;
    02737     // 独立した書き込みマスク
    02738     bool independentWriteMasks_;
    02739     // テクスチャステージ定数
    02740     bool perStageConstant_;
    02741     // フォグとスペキュラアルファ
    02742     bool fogAndSpecularAlpha_;
    02743     // アルファ用ブレンド
    02744     bool separateAlphaBlend_;
    02745     // MRTに違うZ深度
    02746     bool mrtIndependentBitDepth_;
    02747     // MRTにピクセルシェーダ後処理
    02748     bool mrtPostPixelShaderBlending_;
    02749     // 頂点フォグのクランプ
    02750     bool fogVertexClamped_;
    02751
    02752     //--------------------------------------------------------------------------
    02753     // ドライバ能力
    02754     //--------------------------------------------------------------------------
    02755     // スキャンラインの読み込み
    02756     bool readScanLine_;
    02757     // フルスクリーンガンマ
    02758     bool fullscreenGamma_;
    02759     // キャリブレートガンマ
    02760     bool canCalibrateGamma_;
    02761     // マネージドリソース
    02762     bool canManageResource_;
    02763     // 動的テクスチャ
    02764     bool dynamicTextures_;
    02765     // ミップマップ自動生成
    02766     bool canAutogenMipmap_;
    02767     // フルスクリーンアルファブレンド
    02768     bool alphaFullscreenFlipOrDiscard_;
    02769     // sRGBプレゼンテーション
    02770     bool linerToSrgbPresentation_;
    02771     // ビデオメモリへのコピー
    02772     bool copyToVideoMemory_;
    02773     // システムメモリへのコピー
    02774     bool copyToSystemMemory_;
    02775
    02776     //--------------------------------------------------------------------------
    02777     // プリミティブ
    02778     //--------------------------------------------------------------------------
    02779     // 最大点サイズ
    02780     float maxPointSize_;
    02781     // ラインテクスチャ
    02782     bool lineTexture_;
    02783     // ラインZテスト
    02784     bool lineZTest_;
    02785     // ラインブレンド
    02786     bool lineBlend_;
    02787     // ラインアルファ比較
    02788     bool lineAlphaCompare_;
    02789     // ラインフォグ
    02790     bool lineFog_;
    02791     // ラインアンチエイリアス
    02792     bool lineAntialias_;
    02793
    02794     //--------------------------------------------------------------------------
    02795     // 頂点処理
    02796     //--------------------------------------------------------------------------
    02797     // 最大プリミティブ数
    02798     u_int maxPrimitiveCount_;
    02799     // 最大インデックス数
    02800     u_int maxVertexIndex_;
    02801     // 最大ストリーム数
    02802     u_int maxStreams_;
    02803     // 最大ライト数
    02804     u_int maxActiveLights_;
    02805     // 最大W値
    02806     float maxVertexW_;
    02807     // 最大ブレンド行列数
    02808     u_int maxVertexBlendMatrices_;
    02809     // 最大ブレンド行列インデックス数
    02810     u_int maxVertexBlendMatrixIndex_;
    02811     // ガードバンド左
    02812     float guardBandLeft_;
    02813     // ガードバンド上
    02814     float guardBandTop_;
    02815     // ガードバンド右
    02816     float guardBandRight_;
    02817     // ガードバンド下
    02818     float guardBandBottom_;
    02819     // 最大ユーザクリップ面
    02820     u_int maxUserCliplanes_;
    02821     // Texgen
    02822     bool texGen_;
    02823     // カラーマテリアルソース
    02824     bool materialSource_;
    02825     // ディレクショナルライト
    02826     bool directionalLights_;
    02827     // ポジションライト
    02828     bool positionalLights_;
    02829     // ローカルビューワ
    02830     bool localViewer_;
    02831     // 頂点トゥイーニング
    02832     bool tweening_;
    02833     // スフィアマップ
    02834     bool texgenSpheremap_;
    02835     // ローカルビューワ外はTexgen不可
    02836     bool noTexgenNonLocalViewer_;
    02837
    02838     //--------------------------------------------------------------------------
    02839     // 頂点フォーマット
    02840     //--------------------------------------------------------------------------
    02841     // FVFテクスチャ座標カウントマスク
    02842     bool fvfTexCoordCountMask_;
    02843     // FVF頂点に余分な要素を含められる
    02844     bool fvfDoNotStripElements_;
    02845     // FVF頂点サイズ
    02846     bool fvfPSize_;
    02847     // u_byte4宣言
    02848     bool declUByte4_;
    02849     // u_byte4N宣言
    02850     bool declUByte4N_;
    02851     // short2N宣言
    02852     bool declShort2N_;
    02853     // short4N宣言
    02854     bool declShort4N_;
    02855     // u_short2N宣言
    02856     bool declUShort2N_;
    02857     // u_short4N宣言
    02858     bool declUShort4N_;
    02859     // uDec3宣言
    02860     bool declUDec3_;
    02861     // dec3宣言
    02862     bool declDec3_;
    02863     // float16_2宣言
    02864     bool declFloat16_2_;
    02865     // float16_4宣言
    02866     bool declFloat16_4_;
    02867
    02868     //--------------------------------------------------------------------------
    02869     // テッセレーション
    02870     //--------------------------------------------------------------------------
    02871     // Nパッチ最大分割レベル
    02872     float maxNPatchTesselationLevel_;
    02873     // ストリームオフセット
    02874     bool streamOffset_;
    02875     // ディスプレースメントNパッチ
    02876     bool dmapNPatch_;
    02877     // 適応型RTパッチ
    02878     bool adaptiveTessRTPatch_;
    02879     // 適応型Nパッチ
    02880     bool adaptiveTessNPatch_;
    02881     // テクスチャからのStretchRect
    02882     bool canStretchRectFromTextures_;
    02883     // プレディスプレースドNパッチ
    02884     bool preSampledDmapNPatch_;
    02885     // ストリームオフセット共有
    02886     bool vertexElementsCanShareStreamOffset_;
    02887
    02888     //--------------------------------------------------------------------------
    02889     // シェーディング
    02890     //--------------------------------------------------------------------------
    02891     // カラーグーロ
    02892     bool shadeColorGouraudRGB_;
    02893     // スペキュラグーロ
    02894     bool shadeSpecularGouraudRGB_;
    02895     // アルファグーロ
    02896     bool shadeAlphaGouraudBlend_;
    02897     // フォググーロ
    02898     bool shadeFogGouraud_;
    02899
    02900     //--------------------------------------------------------------------------
    02901     // テクスチャ
    02902     //--------------------------------------------------------------------------
    02903     // 最大テクスチャサイズ
    02904     DimensionI maxTextureSize_;
    02905     // 最大ボリュームテクスチャ辺
    02906     u_int maxVolumeExtent_;
    02907     // 最大テクスチャリピート数
    02908     u_int maxTextureRepeat_;
    02909     // 最大異方性フィルタ値
    02910     u_int maxAnisotropy_;
    02911     // 最大テクスチャアスペクト比
    02912     u_int maxTextureAspectRaito_;
    02913     // パースペクティブ補正
    02914     bool texturePerspective_;
    02915     // 辺は2の累乗のみ
    02916     bool texturePow2_;
    02917     // アルファ
    02918     bool textureAlpha_;
    02919     // 正方形のみ
    02920     bool textureSquareOnly_;
    02921     // リピートスケール無し
    02922     bool textureRepeatNotScaledBySize_;
    02923     // アルファパレット
    02924     bool textureAlphaPalette_;
    02925     // 辺は2の累乗で無くてよい
    02926     bool textureNonPow2Conditional_;
    02927     // 射影
    02928     bool textureProjected_;
    02929     // キューブマップ
    02930     bool textureCubemap_;
    02931     // ボリュームマップ
    02932     bool textureVolumemap_;
    02933     // ミップマップ
    02934     bool textureMipmap_;
    02935     // キューブミップマップ
    02936     bool textureMipmapCubemap_;
    02937     // ボリュームミップマップ
    02938     bool textureMipmapVolumemap_;
    02939     // キューブマップ辺は2の累乗のみ
    02940     bool textureCubemapPow2_;
    02941     // ボリュームマップ辺は2の累乗のみ
    02942     bool textureVolumemapPow2_;
    02943     // 射影バンプ環境マップ無し
    02944     bool textureNoProjectedBumpEnvironment_;
    02945
    02946     //--------------------------------------------------------------------------
    02947     // テクスチャアドレス
    02948     //--------------------------------------------------------------------------
    02949     // ラップ
    02950     bool textureAddressWrap_;
    02951     // ミラー
    02952     bool textureAddressMirror_;
    02953     // UVのクランプ
    02954     bool textureAddressClamp_;
    02955     // 境界色の設定
    02956     bool textureAddressBorder_;
    02957     // 独立UVモード
    02958     bool textureAddressIndependentUV_;
    02959     // 1制限ミラー
    02960     bool textureAddressMirrorOnce_;
    02961
    02962     // ボリュームラップ
    02963     bool volumeTextureAddressWrap_;
    02964     // ボリュームミラー
    02965     bool volumeTextureAddressMirror_;
    02966     // ボリュームUVのクランプ
    02967     bool volumeTextureAddressClamp_;
    02968     // ボリューム境界色の設定
    02969     bool volumeTextureAddressBorder_;
    02970     // ボリューム独立UVモード
    02971     bool volumeTextureAddressIndependentUV_;
    02972     // ボリューム1制限ミラー
    02973     bool volumeTextureAddressMirrorOnce_;
    02974
    02975     //--------------------------------------------------------------------------
    02976     // テクスチャフィルタ
    02977     //--------------------------------------------------------------------------
    02978     // 縮小ポイント
    02979     bool textureFilterMinPoint_;
    02980     // 縮小線形
    02981     bool textureFilterMinLiner_;
    02982     // 縮小異方性
    02983     bool textureFilterMinAnisotropic_;
    02984     // 縮小ピラミッド
    02985     bool textureFilterMinPyramidalQuad_;
    02986     // 縮小2次ガウス
    02987     bool textureFilterMinGaussianQuad_;
    02988     // 拡大ポイント
    02989     bool textureFilterMagPoint_;
    02990     // 拡大線形
    02991     bool textureFilterMagLiner_;
    02992     // 拡大異方性
    02993     bool textureFilterMagAnisotropic_;
    02994     // 拡大ピラミッド
    02995     bool textureFilterMagPyramidalQuad_;
    02996     // 拡大2次ガウス
    02997     bool textureFilterMagGaussianQuad_;
    02998     // ミップマップポイント
    02999     bool textureFilterMipmapPoint_;
    03000     // ミップマップ線形
    03001     bool textureFilterMipmapLiner_;
    03002
    03003     // キューブ縮小ポイント
    03004     bool cubeTextureFilterMinPoint_;
    03005     // キューブ縮小線形
    03006     bool cubeTextureFilterMinLiner_;
    03007     // キューブ縮小異方性
    03008     bool cubeTextureFilterMinAnisotropic_;
    03009     // キューブ縮小ピラミッド
    03010     bool cubeTextureFilterMinPyramidalQuad_;
    03011     // キューブ縮小2次ガウス
    03012     bool cubeTextureFilterMinGaussianQuad_;
    03013     // キューブ拡大ポイント
    03014     bool cubeTextureFilterMagPoint_;
    03015     // キューブ拡大線形
    03016     bool cubeTextureFilterMagLiner_;
    03017     // キューブ拡大異方性
    03018     bool cubeTextureFilterMagAnisotropic_;
    03019     // キューブ拡大ピラミッド
    03020     bool cubeTextureFilterMagPyramidalQuad_;
    03021     // キューブ拡大2次ガウス
    03022     bool cubeTextureFilterMagGaussianQuad_;
    03023     // キューブミップマップポイント
    03024     bool cubeTextureFilterMipmapPoint_;
    03025     // キューブミップマップ線形
    03026     bool cubeTextureFilterMipmapLiner_;
    03027
    03028     // ボリューム縮小ポイント
    03029     bool volumeTextureFilterMinPoint_;
    03030     // ボリューム縮小線形
    03031     bool volumeTextureFilterMinLiner_;
    03032     // ボリューム縮小異方性
    03033     bool volumeTextureFilterMinAnisotropic_;
    03034     // ボリューム縮小ピラミッド
    03035     bool volumeTextureFilterMinPyramidalQuad_;
    03036     // ボリューム縮小2次ガウス
    03037     bool volumeTextureFilterMinGaussianQuad_;
    03038     // ボリューム拡大ポイント
    03039     bool volumeTextureFilterMagPoint_;
    03040     // ボリューム拡大線形
    03041     bool volumeTextureFilterMagLiner_;
    03042     // ボリューム拡大異方性
    03043     bool volumeTextureFilterMagAnisotropic_;
    03044     // ボリューム拡大ピラミッド
    03045     bool volumeTextureFilterMagPyramidalQuad_;
    03046     // ボリューム拡大2次ガウス
    03047     bool volumeTextureFilterMagGaussianQuad_;
    03048     // ボリュームミップマップポイント
    03049     bool volumeTextureFilterMipmapPoint_;
    03050     // ボリュームミップマップ線形
    03051     bool volumeTextureFilterMipmapLiner_;
    03052
    03053     // 頂点縮小ポイント
    03054     bool vertexTextureFilterMinPoint_;
    03055     // 頂点縮小線形
    03056     bool vertexTextureFilterMinLiner_;
    03057     // 頂点縮小異方性
    03058     bool vertexTextureFilterMinAnisotropic_;
    03059     // 頂点縮小ピラミッド
    03060     bool vertexTextureFilterMinPyramidalQuad_;
    03061     // 頂点縮小2次ガウス
    03062     bool vertexTextureFilterMinGaussianQuad_;
    03063     // 頂点拡大ポイント
    03064     bool vertexTextureFilterMagPoint_;
    03065     // 頂点拡大線形
    03066     bool vertexTextureFilterMagLiner_;
    03067     // 頂点拡大異方性
    03068     bool vertexTextureFilterMagAnisotropic_;
    03069     // 頂点拡大ピラミッド
    03070     bool vertexTextureFilterMagPyramidalQuad_;
    03071     // 頂点拡大2次ガウス
    03072     bool vertexTextureFilterMagGaussianQuad_;
    03073     // 頂点ミップマップポイント
    03074     bool vertexTextureFilterMipmapPoint_;
    03075     // 頂点ミップマップ線形
    03076     bool vertexTextureFilterMipmapLiner_;
    03077
    03078     //--------------------------------------------------------------------------
    03079     // テクスチャステージ
    03080     //--------------------------------------------------------------------------
    03081     // 最大テクスチャステージ数
    03082     u_int maxTextureBlendStages_;
    03083     // 最大マルチテクスチャ数
    03084     u_int maxSimultaneousTextures_;
    03085     // Disableオペレーション
    03086     bool textureOperationDisable_;
    03087     // SelectArg1オペレーション
    03088     bool textureOperationSelectArg1_;
    03089     // SelectArg2オペレーション
    03090     bool textureOperationSelectArg2_;
    03091     // Modulateオペレーション
    03092     bool textureOperationModulate_;
    03093     // Modulate2xオペレーション
    03094     bool textureOperationModulate2x_;
    03095     // Modulate4xオペレーション
    03096     bool textureOperationModulate4x_;
    03097     // Addオペレーション
    03098     bool textureOperationAdd_;
    03099     // AddSignedオペレーション
    03100     bool textureOperationAddSigned_;
    03101     // AddSigned2xオペレーション
    03102     bool textureOperationAddSigned2x_;
    03103     // Subtractオペレーション
    03104     bool textureOperationSubtract_;
    03105     // AddSmoothオペレーション
    03106     bool textureOperationAddSmooth_;
    03107     // BlendDiffuseAlphaオペレーション
    03108     bool textureOperationBlendDiffuseAlpha_;
    03109     // BlendTextureAlphaオペレーション
    03110     bool textureOperationBlendTextureAlpha_;
    03111     // BlendFactorAlphaオペレーション
    03112     bool textureOperationBlendFactorAlpha_;
    03113     // BlendTextureAlphaPMオペレーション
    03114     bool textureOperationBlendTextureAlphaPM_;
    03115     // BlendCurrentAlphaオペレーション
    03116     bool textureOperationBlendCurrentAlpha_;
    03117     // PreModulateオペレーション
    03118     bool textureOperationPreModulate_;
    03119     // ModulateAlphaAddColorオペレーション
    03120     bool textureOperationModulateAlphaAddColor_;
    03121     // ModulateColorAddAlphaオペレーション
    03122     bool textureOperationModulateColorAddAlpha_;
    03123     // ModulateInvAlphaAddColorオペレーション
    03124     bool textureOperationModulateInvAlphaAddColor_;
    03125     // ModulateInvColorAddAlphaオペレーション
    03126     bool textureOperationModulateInvColorAddAlpha_;
    03127     // BumpEnvMapオペレーション
    03128     bool textureOperationBumpEnvMap_;
    03129     // BumpEnvMapLuminanceオペレーション
    03130     bool textureOperationBumpEnvMapLuminance_;
    03131     // DotProduct3オペレーション
    03132     bool textureOperationDotProduct3_;
    03133     // MultiplyAddオペレーション
    03134     bool textureOperationMultiplyAdd_;
    03135     // Lerpオペレーション
    03136     bool textureOperationLerp_;
    03137
    03138     //--------------------------------------------------------------------------
    03139     // 比較
    03140     //--------------------------------------------------------------------------
    03141     // Z比較Never
    03142     bool zCompareNever_;
    03143     // Z比較Less
    03144     bool zCompareLess_;
    03145     // Z比較Equal
    03146     bool zCompareEqual_;
    03147     // Z比較LessEqual
    03148     bool zCompareLessEqual_;
    03149     // Z比較Greater
    03150     bool zCompareGreater_;
    03151     // Z比較NotEqual
    03152     bool zCompareNotEqual_;
    03153     // Z比較GreaterEqual
    03154     bool zCompareGreaterEqual_;
    03155     // Z比較Always
    03156     bool zCompareAlways_;
    03157
    03158     // ステンシルKeep
    03159     bool stencilKeep_;
    03160     // ステンシルZero
    03161     bool stencilZero_;
    03162     // ステンシルReplace
    03163     bool stencilReplace_;
    03164     // ステンシルIncrSat
    03165     bool stencilIncrSat_;
    03166     // ステンシルDecrSat
    03167     bool stencilDecrSat_;
    03168     // ステンシルInvert
    03169     bool stencilInvert_;
    03170     // ステンシルIncr
    03171     bool stencilIncr_;
    03172     // ステンシルDecr
    03173     bool stencilDecr_;
    03174     // ステンシルTwoSided
    03175     bool stencilTwoSided_;
    03176
    03177     // アルファ比較Never
    03178     bool alphaCompareNever_;
    03179     // アルファ比較Less
    03180     bool alphaCompareLess_;
    03181     // アルファ比較Equal
    03182     bool alphaCompareEqual_;
    03183     // アルファ比較LessEqual
    03184     bool alphaCompareLessEqual_;
    03185     // アルファ比較Greater
    03186     bool alphaCompareGreater_;
    03187     // アルファ比較NotEqual
    03188     bool alphaCompareNotEqual_;
    03189     // アルファ比較GreaterEqual
    03190     bool alphaCompareGreaterEqual_;
    03191     // アルファ比較Always
    03192     bool alphaCompareAlways_;
    03193
    03194     //--------------------------------------------------------------------------
    03195     // ブレンディング
    03196     //--------------------------------------------------------------------------
    03197     // ソースZero
    03198     bool blendSourceZero_;
    03199     // ソースOne
    03200     bool blendSourceOne_;
    03201     // ソースSrcColor
    03202     bool blendSourceSrcColor_;
    03203     // ソースInvSrcColor
    03204     bool blendSourceInvSrcColor_;
    03205     // ソースSrcAlpha
    03206     bool blendSourceSrcAlpha_;
    03207     // ソースInvSrcAlpha
    03208     bool blendSourceInvSrcAlpha_;
    03209     // ソースDestAlpha
    03210     bool blendSourceDestAlpha_;
    03211     // ソースInvDestAlpha
    03212     bool blendSourceInvDestAlpha_;
    03213     // ソースDestColor
    03214     bool blendSourceDestColor_;
    03215     // ソースInvDestColor
    03216     bool blendSourceInvDestColor_;
    03217     // ソースSrcAlphaSat
    03218     bool blendSourceSrcAlphaSat_;
    03219     // ソースBothSrcAlpha
    03220     bool blendSourceBothSrcAlpha_;
    03221     // ソースBothInvSrcAlpha
    03222     bool blendSourceBothInvSrcAlpha_;
    03223     // ソースBlendFactor
    03224     bool blendSourceBlendFactor_;
    03225
    03226     // デスティネーションZero
    03227     bool blendDestinationZero_;
    03228     // デスティネーションOne
    03229     bool blendDestinationOne_;
    03230     // デスティネーションSrcColor
    03231     bool blendDestinationSrcColor_;
    03232     // デスティネーションInvSrcColor
    03233     bool blendDestinationInvSrcColor_;
    03234     // デスティネーションSrcAlpha
    03235     bool blendDestinationSrcAlpha_;
    03236     // デスティネーションInvSrcAlpha
    03237     bool blendDestinationInvSrcAlpha_;
    03238     // デスティネーションDestAlpha
    03239     bool blendDestinationDestAlpha_;
    03240     // デスティネーションInvDestAlpha
    03241     bool blendDestinationInvDestAlpha_;
    03242     // デスティネーションDestColor
    03243     bool blendDestinationDestColor_;
    03244     // デスティネーションInvDestColor
    03245     bool blendDestinationInvDestColor_;
    03246     // デスティネーションSrcAlphaSat
    03247     bool blendDestinationSrcAlphaSat_;
    03248     // デスティネーションBothSrcAlpha
    03249     bool blendDestinationBothSrcAlpha_;
    03250     // デスティネーションBothInvSrcAlpha
    03251     bool blendDestinationBothInvSrcAlpha_;
    03252     // デスティネーションBlendFactor
    03253     bool blendDestinationBlendFactor_;
    03254
    03255     //--------------------------------------------------------------------------
    03256     // ラスタライズ
    03257     //--------------------------------------------------------------------------
    03258     // アンチエイリアス拡張
    03259     float extentsAdjust_;
    03260     // ディザ
    03261     bool rasterDither_;
    03262     // Zテスト
    03263     bool rasterZTest_;
    03264     // 頂点フォグ
    03265     bool rasterFogVertex_;
    03266     // フォグテーブル
    03267     bool rasterFogTable_;
    03268     // ミップマップバイアス
    03269     bool rasterMipmapLODBias_;
    03270     // 隠れ面消去
    03271     bool rasterZBufferLessHSR_;
    03272     // レンジフォグ
    03273     bool rasterFogRange_;
    03274     // 異方性フィルタリング
    03275     bool rasterAnisotropy_;
    03276     // Wバッファ
    03277     bool rasterWBuffer_;
    03278     // Wフォグ
    03279     bool rasterWFog_;
    03280     // Zフォグ
    03281     bool rasterZFog_;
    03282     // 色パースペクティブ補正
    03283     bool rasterColorPerspective_;
    03284     // シザーテスト
    03285     bool rasterScissorTest_;
    03286     // スロープスケール深度バイアス
    03287     bool rasterSlopeScaleDepthBias_;
    03288     // 深度バイアス
    03289     bool rasterDepthBias_;
    03290     // マルチサンプル切り替え
    03291     bool rasterMultiSampleToggle_;
    03292
    03293     //--------------------------------------------------------------------------
    03294     // 頂点シェーダ
    03295     //--------------------------------------------------------------------------
    03296     // 頂点シェーダメジャーバージョン
    03297     u_int vertexShaderMajorVersion_;
    03298     // 頂点シェーダマイナーバージョン
    03299     u_int vertexShaderMinorVersion_;
    03300     // 最大頂点シェーダ定数
    03301     u_int maxVertexShaderConst_;
    03302     // 最大ストリームストライド数
    03303     u_int maxStreamStride_;
    03304     // 最大命令実行数
    03305     u_int maxVShaderInstructionsExecuted_;
    03306     // 最大命令スロット数
    03307     u_int maxVertexShader30InstructionSlots_;
    03308     // 動的フローネストレベル
    03309     int vertexShaderDynamicFlowControlDepth_;
    03310     // テンポラリ数
    03311     int vertexShaderNumTemps_;
    03312     // 静的フローネストレベル
    03313     int vertexShaderStaticFlowControlDepth_;
    03314     // プレディケーション命令
    03315     bool vertexShaderPredication_;
    03316
    03317     //--------------------------------------------------------------------------
    03318     // ピクセルシェーダ
    03319     //--------------------------------------------------------------------------
    03320     // ピクセルシェーダメジャーバージョン
    03321     u_int pixelShaderMajorVersion_;
    03322     // ピクセルシェーダマイナーバージョン
    03323     u_int pixelShaderMinorVersion_;
    03324     // ピクセルシェーダ1x最大値
    03325     float pixelShader1xMaxValue_;
    03326     // 最大命令実行数
    03327     u_int maxPShaderInstructionsExecuted_;
    03328     // 最大命令スロット数
    03329     u_int maxPixelShader30InstructionSlots_;
    03330     // 動的フローネストレベル
    03331     int pixelShaderDynamicFlowControlDepth_;
    03332     // テンポラリ数
    03333     int pixelShaderNumTemps_;
    03334     // 静的フローネストレベル
    03335     int pixelShaderStaticFlowControlDepth_;
    03336     // 命令スロット数
    03337     int pixelShaderNumInstructionSlots_;
    03338     // 任意の入れ替え
    03339     bool pixelShaderArbitrarySwizzle_;
    03340     // グラデーション命令
    03341     bool pixelShaderGradientInstructions_;
    03342     // プレディケーション命令
    03343     bool pixelShaderPredication_;
    03344     // 従属読み込み無制限
    03345     bool pixelShaderNoDependentReadLimit_;
    03346     // tex命令無制限
    03347     bool pixelShaderNoTexnstructionLimit_;
    03348
    03349 };
    03350
    03351 //------------------------------------------------------------------------------
    03352 } // End of namespace Lamp
    03353 #endif // End of GRAPHICS_DEVICE_CAPACITY_H_
    03354 //------------------------------------------------------------------------------
    03355