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 

Generated on Wed Mar 16 10:29:31 2005 for Lamp by doxygen 1.3.2