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