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

# GraphicsDeviceCapacity.cpp

Go to the documentation of this file.

    00001 //------------------------------------------------------------------------------
    00002 // Lamp : Open source game middleware
    00003 // Copyright (C) 2004  Junpei Ohtani ( Email : junpee@users.sourceforge.jp )
    00004 //
    00005 // This library is free software; you can redistribute it and/or
    00006 // modify it under the terms of the GNU Lesser General Public
    00007 // License as published by the Free Software Foundation; either
    00008 // version 2.1 of the License, or (at your option) any later version.
    00009 //
    00010 // This library is distributed in the hope that it will be useful,
    00011 // but WITHOUT ANY WARRANTY; without even the implied warranty of
    00012 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    00013 // Lesser General Public License for more details.
    00014 //
    00015 // You should have received a copy of the GNU Lesser General Public
    00016 // License along with this library; if not, write to the Free Software
    00017 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
    00018 //------------------------------------------------------------------------------
    00019
    00020 /** @file
    00021  * グラフィックスデバイス能力実装
    00022  * @author Junpee
    00023  */
    00024
    00025 #include "LampBasic.h"
    00026 #include "Graphics/System/GraphicsDeviceCapacity.h"
    00027 #include "Graphics/System/GraphicsDeviceSettings.h"
    00028 #include "Graphics/Enumeration/GraphicsAdapterInformation.h"
    00029 #include "Graphics/Enumeration/GraphicsDeviceInformation.h"
    00030 #include "Graphics/Enumeration/GraphicsDeviceComboInformation.h"
    00031 #include "Graphics/System/GraphicsDevice.h"
    00032 #include "Graphics/Primitive/GraphicsBufferFormat.h"
    00033
    00034 namespace Lamp{
    00035
    00036 // インスタンス
    00037 GraphicsDeviceCapacity* GraphicsDeviceCapacity::instance_ = NULL;
    00038
    00039 //------------------------------------------------------------------------------
    00040 // コンストラクタ
    00041 GraphicsDeviceCapacity::GraphicsDeviceCapacity(){
    00042     Assert(instance_ == NULL);
    00043     instance_ = this;
    00044 }
    00045 //------------------------------------------------------------------------------
    00046 // デストラクタ
    00047 GraphicsDeviceCapacity::~GraphicsDeviceCapacity(){
    00048     Assert(instance_ == this);
    00049     instance_ = NULL;
    00050 }
    00051 //------------------------------------------------------------------------------
    00052 // デバイスがリセットされた
    00053 void GraphicsDeviceCapacity::deviceReset(Direct3DDevice* direct3DDevice){
    00054     // デバイス能力の再取得
    00055     direct3DDevice->GetDeviceCaps(&capacity_);
    00056
    00057     //--------------------------------------------------------------------------
    00058     // デバイス情報
    00059     //--------------------------------------------------------------------------
    00060     GraphicsDeviceSettings* settings = GraphicsDeviceSettings::getInstance();
    00061     GraphicsAdapterInformation* adapterInfo = settings->getAdapterInformation();
    00062     GraphicsDeviceInformation* deviceInfo = settings->getDeviceInformation();
    00063     GraphicsDeviceComboInformation* deviceComboInfo =
    00064         settings->getDeviceComboInformation();
    00065     deviceName_ = adapterInfo->getName();
    00066     driverName_ = adapterInfo->getDriverName();
    00067     // capacity_に同一データ有り
    00068     deviceOrdinal_ = adapterInfo->getAdapterOrdinal();
    00069     Assert(adapterInfo->getAdapterOrdinal() == capacity_.AdapterOrdinal);
    00070     // capacity_に同一データ有り
    00071     deviceType_ = deviceInfo->getDeviceType();
    00072     Assert(deviceInfo->getDeviceType() == capacity_.DeviceType);
    00073     isWindowed_ = settings->isWindowed();
    00074     vertexProcessingType_ = settings->getVertexProcessingType();
    00075     adapterFormat_ = deviceComboInfo->getAdapterFormat();
    00076     backBufferFormat_ = deviceComboInfo->getBackBufferFormat();
    00077     backBufferSize_ = settings->getBackBufferSize();
    00078     refreshRate_ = settings->getDisplayMode().RefreshRate;
    00079     depthStencilEnabled_ = settings->getDepthStencilEnabled();
    00080     depthStencilFormat_ = settings->getDepthStencilFormat();
    00081     presentationInterval_ = settings->getPresentationInterval();
    00082     multiSampleType_ = settings->getMultiSampleType();
    00083     multiSampleQuality_ = settings->getMultiSampleQuality();
    00084
    00085     //--------------------------------------------------------------------------
    00086     // デバイス能力
    00087     //--------------------------------------------------------------------------
    00088     numSimultaneousRTs_ = capacity_.NumSimultaneousRTs;
    00089     executeSystemMemory_ =
    00090         ((capacity_.DevCaps & D3DDEVCAPS_EXECUTESYSTEMMEMORY) != 0);
    00091     executeVideoMemory_ =
    00092         ((capacity_.DevCaps & D3DDEVCAPS_EXECUTEVIDEOMEMORY) != 0);
    00093     tlVertexSystemMemory_ =
    00094         ((capacity_.DevCaps & D3DDEVCAPS_TLVERTEXSYSTEMMEMORY) != 0);
    00095     tlVertexVideoMemory_ =
    00096         ((capacity_.DevCaps & D3DDEVCAPS_TLVERTEXVIDEOMEMORY) != 0);
    00097     textureSystemMemory_ =
    00098         ((capacity_.DevCaps & D3DDEVCAPS_TEXTURESYSTEMMEMORY) != 0);
    00099     textureVideoMemory_ =
    00100         ((capacity_.DevCaps & D3DDEVCAPS_TEXTUREVIDEOMEMORY) != 0);
    00101     drawPrimTlVertex_ =
    00102         ((capacity_.DevCaps & D3DDEVCAPS_DRAWPRIMTLVERTEX) != 0);
    00103     canRenderAfterFlip_ =
    00104         ((capacity_.DevCaps & D3DDEVCAPS_CANRENDERAFTERFLIP) != 0);
    00105     textureNonLocalVidedMemory_ =
    00106         ((capacity_.DevCaps & D3DDEVCAPS_TEXTURENONLOCALVIDMEM) != 0);
    00107     drawPrimitives2_ =
    00108         ((capacity_.DevCaps & D3DDEVCAPS_DRAWPRIMITIVES2) != 0);
    00109     separateTextureMemories_ =
    00110         ((capacity_.DevCaps & D3DDEVCAPS_SEPARATETEXTUREMEMORIES) != 0);
    00111     drawPrimitives2EX_ =
    00112         ((capacity_.DevCaps & D3DDEVCAPS_DRAWPRIMITIVES2EX) != 0);
    00113     hwTransformAndLight_ =
    00114         ((capacity_.DevCaps & D3DDEVCAPS_HWTRANSFORMANDLIGHT) != 0);
    00115     canBltSystemToNonLocal_ =
    00116         ((capacity_.DevCaps & D3DDEVCAPS_CANBLTSYSTONONLOCAL) != 0);
    00117     hwRasterization_ =
    00118         ((capacity_.DevCaps & D3DDEVCAPS_HWRASTERIZATION) != 0);
    00119     pureDevice_ =
    00120         ((capacity_.DevCaps & D3DDEVCAPS_PUREDEVICE) != 0);
    00121     quinticRtPatches_ =
    00122         ((capacity_.DevCaps & D3DDEVCAPS_QUINTICRTPATCHES) != 0);
    00123     rtPatches_ =
    00124         ((capacity_.DevCaps & D3DDEVCAPS_RTPATCHES) != 0);
    00125     rtPatchHanldeZero_ =
    00126         ((capacity_.DevCaps & D3DDEVCAPS_RTPATCHHANDLEZERO) != 0);
    00127     nPatches_ =
    00128         ((capacity_.DevCaps & D3DDEVCAPS_NPATCHES) != 0);
    00129     presentationIntervalImmediate_ =
    00130         ((capacity_.PresentationIntervals &
    00131         D3DPRESENT_INTERVAL_IMMEDIATE) != 0);
    00132     presentationIntervalOne_ =
    00133         ((capacity_.PresentationIntervals & D3DPRESENT_INTERVAL_ONE) != 0);
    00134     presentationIntervalTwo_ =
    00135         ((capacity_.PresentationIntervals & D3DPRESENT_INTERVAL_TWO) != 0);
    00136     presentationIntervalThree_ =
    00137         ((capacity_.PresentationIntervals & D3DPRESENT_INTERVAL_THREE) != 0);
    00138     presentationIntervalFour_ =
    00139         ((capacity_.PresentationIntervals & D3DPRESENT_INTERVAL_FOUR) != 0);
    00140     cursorColor_ =
    00141         ((capacity_.CursorCaps & D3DCURSORCAPS_COLOR) != 0);
    00142     cursorLowRes_ =
    00143         ((capacity_.CursorCaps & D3DCURSORCAPS_LOWRES) != 0);
    00144     stretchRectMinPoint_ =
    00145         ((capacity_.StretchRectFilterCaps & D3DPTFILTERCAPS_MINFPOINT) != 0);
    00146     stretchRectMagPoint_ =
    00147         ((capacity_.StretchRectFilterCaps & D3DPTFILTERCAPS_MAGFPOINT) != 0);
    00148     stretchRectMinLinear_ =
    00149         ((capacity_.StretchRectFilterCaps & D3DPTFILTERCAPS_MINFLINEAR) != 0);
    00150     stretchRectMagLinear_ =
    00151         ((capacity_.StretchRectFilterCaps & D3DPTFILTERCAPS_MAGFLINEAR) != 0);
    00152
    00153     //--------------------------------------------------------------------------
    00154     // デバイスその他
    00155     //--------------------------------------------------------------------------
    00156     masterAdapterOrdinal_ = capacity_.MasterAdapterOrdinal;
    00157     adapterOrdinalInGroup_ = capacity_.AdapterOrdinalInGroup;
    00158     numberOfAdaptersInGroup_ = capacity_.NumberOfAdaptersInGroup;
    00159     maskZ_ =
    00160         ((capacity_.PrimitiveMiscCaps & D3DPMISCCAPS_MASKZ) != 0);
    00161     cullNone_ =
    00162         ((capacity_.PrimitiveMiscCaps & D3DPMISCCAPS_CULLNONE) != 0);
    00163     cullCW_ =
    00164         ((capacity_.PrimitiveMiscCaps & D3DPMISCCAPS_CULLCW) != 0);
    00165     cullCCW_ =
    00166         ((capacity_.PrimitiveMiscCaps & D3DPMISCCAPS_CULLCCW) != 0);
    00167     colorWriteEnable_ =
    00168         ((capacity_.PrimitiveMiscCaps & D3DPMISCCAPS_COLORWRITEENABLE) != 0);
    00169     clipPlaneScaledPoints_ =
    00170         ((capacity_.PrimitiveMiscCaps &
    00171         D3DPMISCCAPS_CLIPPLANESCALEDPOINTS) != 0);
    00172     clipTlVerts_ =
    00173         ((capacity_.PrimitiveMiscCaps & D3DPMISCCAPS_CLIPTLVERTS) != 0);
    00174     tssArgTemp_ =
    00175         ((capacity_.PrimitiveMiscCaps & D3DPMISCCAPS_TSSARGTEMP) != 0);
    00176     blendOp_ =
    00177         ((capacity_.PrimitiveMiscCaps & D3DPMISCCAPS_BLENDOP) != 0);
    00178     nullReference_ =
    00179         ((capacity_.PrimitiveMiscCaps & D3DPMISCCAPS_NULLREFERENCE) != 0);
    00180     independentWriteMasks_ =
    00181         ((capacity_.PrimitiveMiscCaps &
    00182         D3DPMISCCAPS_INDEPENDENTWRITEMASKS) != 0);
    00183     perStageConstant_ =
    00184         ((capacity_.PrimitiveMiscCaps & D3DPMISCCAPS_PERSTAGECONSTANT) != 0);
    00185     fogAndSpecularAlpha_ =
    00186         ((capacity_.PrimitiveMiscCaps & D3DPMISCCAPS_FOGANDSPECULARALPHA) != 0);
    00187     separateAlphaBlend_ =
    00188         ((capacity_.PrimitiveMiscCaps & D3DPMISCCAPS_SEPARATEALPHABLEND) != 0);
    00189     mrtIndependentBitDepth_ =
    00190         ((capacity_.PrimitiveMiscCaps &
    00191         D3DPMISCCAPS_MRTINDEPENDENTBITDEPTHS) != 0);
    00192     mrtPostPixelShaderBlending_ =
    00193         ((capacity_.PrimitiveMiscCaps &
    00194         D3DPMISCCAPS_MRTPOSTPIXELSHADERBLENDING) != 0);
    00195     fogVertexClamped_ =
    00196         ((capacity_.PrimitiveMiscCaps & D3DPMISCCAPS_FOGVERTEXCLAMPED) != 0);
    00197
    00198     //--------------------------------------------------------------------------
    00199     // ドライバ能力
    00200     //--------------------------------------------------------------------------
    00201     readScanLine_ =
    00202         ((capacity_.Caps & D3DCAPS_READ_SCANLINE) != 0);
    00203     fullscreenGamma_ =
    00204         ((capacity_.Caps2 & D3DCAPS2_FULLSCREENGAMMA) != 0);
    00205     canCalibrateGamma_ =
    00206         ((capacity_.Caps2 & D3DCAPS2_CANCALIBRATEGAMMA) != 0);
    00207     canManageResource_ =
    00208         ((capacity_.Caps2 & D3DCAPS2_CANMANAGERESOURCE) != 0);
    00209     dynamicTextures_ =
    00210         ((capacity_.Caps2 & D3DCAPS2_DYNAMICTEXTURES) != 0);
    00211     canAutogenMipmap_ =
    00212         ((capacity_.Caps2 & D3DCAPS2_CANAUTOGENMIPMAP) != 0);
    00213     alphaFullscreenFlipOrDiscard_ =
    00214         ((capacity_.Caps3 & D3DCAPS3_ALPHA_FULLSCREEN_FLIP_OR_DISCARD) != 0);
    00215     linerToSrgbPresentation_ =
    00216         ((capacity_.Caps3 & D3DCAPS3_LINEAR_TO_SRGB_PRESENTATION) != 0);
    00217     copyToVideoMemory_ =
    00218         ((capacity_.Caps3 & D3DCAPS3_COPY_TO_VIDMEM) != 0);
    00219     copyToSystemMemory_ =
    00220         ((capacity_.Caps3 & D3DCAPS3_COPY_TO_SYSTEMMEM) != 0);
    00221
    00222     //--------------------------------------------------------------------------
    00223     // プリミティブ
    00224     //--------------------------------------------------------------------------
    00225     maxPointSize_ = capacity_.MaxPointSize;
    00226     lineTexture_ =      ((capacity_.LineCaps & D3DLINECAPS_TEXTURE) != 0);
    00227     lineZTest_ =        ((capacity_.LineCaps & D3DLINECAPS_ZTEST) != 0);
    00228     lineBlend_ =        ((capacity_.LineCaps & D3DLINECAPS_BLEND) != 0);
    00229     lineAlphaCompare_ = ((capacity_.LineCaps & D3DLINECAPS_ALPHACMP) != 0);
    00230     lineFog_ =          ((capacity_.LineCaps & D3DLINECAPS_FOG) != 0);
    00231     lineAntialias_ =    ((capacity_.LineCaps & D3DLINECAPS_ANTIALIAS) != 0);
    00232
    00233     //--------------------------------------------------------------------------
    00234     // 頂点処理
    00235     //--------------------------------------------------------------------------
    00236     maxPrimitiveCount_ = capacity_.MaxPrimitiveCount;
    00237     maxVertexIndex_ = capacity_.MaxVertexIndex;
    00238     maxStreams_ = capacity_.MaxStreams;
    00239     maxActiveLights_ = capacity_.MaxActiveLights;
    00240     maxVertexW_ = capacity_.MaxVertexW;
    00241     maxVertexBlendMatrices_ = capacity_.MaxVertexBlendMatrices;
    00242     maxVertexBlendMatrixIndex_ = capacity_.MaxVertexBlendMatrixIndex;
    00243     guardBandLeft_ = capacity_.GuardBandLeft;
    00244     guardBandTop_ = capacity_.GuardBandTop;
    00245     guardBandRight_ = capacity_.GuardBandRight;
    00246     guardBandBottom_ = capacity_.GuardBandBottom;
    00247     maxUserCliplanes_ = capacity_.MaxUserClipPlanes;
    00248     texGen_ =
    00249         ((capacity_.VertexProcessingCaps & D3DVTXPCAPS_TEXGEN) != 0);
    00250     materialSource_ =
    00251         ((capacity_.VertexProcessingCaps & D3DVTXPCAPS_MATERIALSOURCE7) != 0);
    00252     directionalLights_ =
    00253         ((capacity_.VertexProcessingCaps & D3DVTXPCAPS_DIRECTIONALLIGHTS) != 0);
    00254     positionalLights_ =
    00255         ((capacity_.VertexProcessingCaps & D3DVTXPCAPS_POSITIONALLIGHTS) != 0);
    00256     localViewer_ =
    00257         ((capacity_.VertexProcessingCaps & D3DVTXPCAPS_LOCALVIEWER) != 0);
    00258     tweening_ =
    00259         ((capacity_.VertexProcessingCaps & D3DVTXPCAPS_TWEENING) != 0);
    00260     texgenSpheremap_ =
    00261         ((capacity_.VertexProcessingCaps & D3DVTXPCAPS_TEXGEN_SPHEREMAP) != 0);
    00262     noTexgenNonLocalViewer_ =
    00263         ((capacity_.VertexProcessingCaps &
    00264         D3DVTXPCAPS_NO_TEXGEN_NONLOCALVIEWER) != 0);
    00265
    00266     //--------------------------------------------------------------------------
    00267     // 頂点フォーマット
    00268     //--------------------------------------------------------------------------
    00269     fvfTexCoordCountMask_ =
    00270         ((capacity_.FVFCaps & D3DFVFCAPS_TEXCOORDCOUNTMASK) != 0);
    00271     fvfDoNotStripElements_ =
    00272         ((capacity_.FVFCaps & D3DFVFCAPS_DONOTSTRIPELEMENTS) != 0);
    00273     fvfPSize_ = ((capacity_.FVFCaps & D3DFVFCAPS_PSIZE) != 0);
    00274     declUByte4_ = ((capacity_.DeclTypes & D3DDTCAPS_UBYTE4) != 0);
    00275     declUByte4N_ = ((capacity_.DeclTypes & D3DDTCAPS_UBYTE4N) != 0);
    00276     declShort2N_ = ((capacity_.DeclTypes & D3DDTCAPS_SHORT2N) != 0);
    00277     declShort4N_ = ((capacity_.DeclTypes & D3DDTCAPS_SHORT4N) != 0);
    00278     declUShort2N_ = ((capacity_.DeclTypes & D3DDTCAPS_USHORT2N) != 0);
    00279     declUShort4N_ = ((capacity_.DeclTypes & D3DDTCAPS_USHORT4N) != 0);
    00280     declUDec3_ = ((capacity_.DeclTypes & D3DDTCAPS_UDEC3) != 0);
    00281     declDec3_ = ((capacity_.DeclTypes & D3DDTCAPS_DEC3N) != 0);
    00282     declFloat16_2_ = ((capacity_.DeclTypes & D3DDTCAPS_FLOAT16_2) != 0);
    00283     declFloat16_4_ = ((capacity_.DeclTypes & D3DDTCAPS_FLOAT16_4) != 0);
    00284
    00285     //--------------------------------------------------------------------------
    00286     // テッセレーション
    00287     //--------------------------------------------------------------------------
    00288     maxNPatchTesselationLevel_ = capacity_.MaxNpatchTessellationLevel;
    00289     streamOffset_ =
    00290         ((capacity_.DevCaps2 & D3DDEVCAPS2_STREAMOFFSET) != 0);
    00291     dmapNPatch_ =
    00292         ((capacity_.DevCaps2 & D3DDEVCAPS2_DMAPNPATCH) != 0);
    00293     adaptiveTessRTPatch_ =
    00294         ((capacity_.DevCaps2 & D3DDEVCAPS2_ADAPTIVETESSRTPATCH) != 0);
    00295     adaptiveTessNPatch_ =
    00296         ((capacity_.DevCaps2 & D3DDEVCAPS2_ADAPTIVETESSNPATCH) != 0);
    00297     canStretchRectFromTextures_ =
    00298         ((capacity_.DevCaps2 & D3DDEVCAPS2_CAN_STRETCHRECT_FROM_TEXTURES) != 0);
    00299     preSampledDmapNPatch_ =
    00300         ((capacity_.DevCaps2 & D3DDEVCAPS2_PRESAMPLEDDMAPNPATCH) != 0);
    00301     vertexElementsCanShareStreamOffset_ =
    00302         ((capacity_.DevCaps2 &
    00303         D3DDEVCAPS2_VERTEXELEMENTSCANSHARESTREAMOFFSET) != 0);
    00304
    00305     //--------------------------------------------------------------------------
    00306     // シェーディング
    00307     //--------------------------------------------------------------------------
    00308     shadeColorGouraudRGB_ =
    00309         ((capacity_.ShadeCaps & D3DPSHADECAPS_COLORGOURAUDRGB) != 0);
    00310     shadeSpecularGouraudRGB_ =
    00311         ((capacity_.ShadeCaps & D3DPSHADECAPS_SPECULARGOURAUDRGB) != 0);
    00312     shadeAlphaGouraudBlend_ =
    00313         ((capacity_.ShadeCaps & D3DPSHADECAPS_ALPHAGOURAUDBLEND) != 0);
    00314     shadeFogGouraud_ =
    00315         ((capacity_.ShadeCaps & D3DPSHADECAPS_FOGGOURAUD) != 0);
    00316
    00317     //--------------------------------------------------------------------------
    00318     // テクスチャ
    00319     //--------------------------------------------------------------------------
    00320     maxTextureSize_.set(capacity_.MaxTextureWidth, capacity_.MaxTextureHeight);
    00321     maxVolumeExtent_ = capacity_.MaxVolumeExtent;
    00322     maxTextureRepeat_ = capacity_.MaxTextureRepeat;
    00323     maxAnisotropy_ = capacity_.MaxAnisotropy;
    00324     maxTextureAspectRaito_ = capacity_.MaxTextureAspectRatio;
    00325     texturePerspective_ =
    00326         ((capacity_.TextureCaps & D3DPTEXTURECAPS_PERSPECTIVE) != 0);
    00327     texturePow2_ =
    00328         ((capacity_.TextureCaps & D3DPTEXTURECAPS_POW2) != 0);
    00329     textureAlpha_ =
    00330         ((capacity_.TextureCaps & D3DPTEXTURECAPS_ALPHA) != 0);
    00331     textureSquareOnly_ =
    00332         ((capacity_.TextureCaps & D3DPTEXTURECAPS_SQUAREONLY) != 0);
    00333     textureRepeatNotScaledBySize_ =
    00334         ((capacity_.TextureCaps &
    00335         D3DPTEXTURECAPS_TEXREPEATNOTSCALEDBYSIZE) != 0);
    00336     textureAlphaPalette_ =
    00337         ((capacity_.TextureCaps & D3DPTEXTURECAPS_ALPHAPALETTE) != 0);
    00338     textureNonPow2Conditional_ =
    00339         ((capacity_.TextureCaps & D3DPTEXTURECAPS_NONPOW2CONDITIONAL) != 0);
    00340     textureProjected_ =
    00341         ((capacity_.TextureCaps & D3DPTEXTURECAPS_PROJECTED) != 0);
    00342     textureCubemap_ =
    00343         ((capacity_.TextureCaps & D3DPTEXTURECAPS_CUBEMAP) != 0);
    00344     textureVolumemap_ =
    00345         ((capacity_.TextureCaps & D3DPTEXTURECAPS_VOLUMEMAP) != 0);
    00346     textureMipmap_ =
    00347         ((capacity_.TextureCaps & D3DPTEXTURECAPS_MIPMAP) != 0);
    00348     textureMipmapCubemap_ =
    00349         ((capacity_.TextureCaps & D3DPTEXTURECAPS_MIPCUBEMAP) != 0);
    00350     textureMipmapVolumemap_ =
    00351         ((capacity_.TextureCaps & D3DPTEXTURECAPS_MIPVOLUMEMAP) != 0);
    00352     textureCubemapPow2_ =
    00353         ((capacity_.TextureCaps & D3DPTEXTURECAPS_CUBEMAP_POW2) != 0);
    00354     textureVolumemapPow2_ =
    00355         ((capacity_.TextureCaps & D3DPTEXTURECAPS_VOLUMEMAP_POW2) != 0);
    00356     textureNoProjectedBumpEnvironment_ =
    00357         ((capacity_.TextureCaps & D3DPTEXTURECAPS_NOPROJECTEDBUMPENV) != 0);
    00358
    00359     //--------------------------------------------------------------------------
    00360     // テクスチャアドレス
    00361     //--------------------------------------------------------------------------
    00362     textureAddressWrap_ =
    00363         ((capacity_.TextureAddressCaps & D3DPTADDRESSCAPS_WRAP) != 0);
    00364     textureAddressMirror_ =
    00365         ((capacity_.TextureAddressCaps & D3DPTADDRESSCAPS_MIRROR) != 0);
    00366     textureAddressClamp_ =
    00367         ((capacity_.TextureAddressCaps & D3DPTADDRESSCAPS_CLAMP) != 0);
    00368     textureAddressBorder_ =
    00369         ((capacity_.TextureAddressCaps & D3DPTADDRESSCAPS_BORDER) != 0);
    00370     textureAddressIndependentUV_ =
    00371         ((capacity_.TextureAddressCaps & D3DPTADDRESSCAPS_INDEPENDENTUV) != 0);
    00372     textureAddressMirrorOnce_ =
    00373         ((capacity_.TextureAddressCaps & D3DPTADDRESSCAPS_MIRRORONCE) != 0);
    00374     volumeTextureAddressWrap_ =
    00375         ((capacity_.VolumeTextureAddressCaps & D3DPTADDRESSCAPS_WRAP) != 0);
    00376     volumeTextureAddressMirror_ =
    00377         ((capacity_.VolumeTextureAddressCaps & D3DPTADDRESSCAPS_MIRROR) != 0);
    00378     volumeTextureAddressClamp_ =
    00379         ((capacity_.VolumeTextureAddressCaps & D3DPTADDRESSCAPS_CLAMP) != 0);
    00380     volumeTextureAddressBorder_ =
    00381         ((capacity_.VolumeTextureAddressCaps & D3DPTADDRESSCAPS_BORDER) != 0);
    00382     volumeTextureAddressIndependentUV_ =
    00383         ((capacity_.VolumeTextureAddressCaps &
    00384         D3DPTADDRESSCAPS_INDEPENDENTUV) != 0);
    00385     volumeTextureAddressMirrorOnce_ =
    00386         ((capacity_.VolumeTextureAddressCaps &
    00387         D3DPTADDRESSCAPS_MIRRORONCE) != 0);
    00388
    00389     //--------------------------------------------------------------------------
    00390     // テクスチャフィルタ
    00391     //--------------------------------------------------------------------------
    00392     textureFilterMinPoint_ =
    00393         ((capacity_.TextureFilterCaps & D3DPTFILTERCAPS_MINFPOINT) != 0);
    00394     textureFilterMinLiner_ =
    00395         ((capacity_.TextureFilterCaps & D3DPTFILTERCAPS_MINFLINEAR) != 0);
    00396     textureFilterMinAnisotropic_ =
    00397         ((capacity_.TextureFilterCaps & D3DPTFILTERCAPS_MINFANISOTROPIC) != 0);
    00398     textureFilterMinPyramidalQuad_ =
    00399         ((capacity_.TextureFilterCaps &
    00400         D3DPTFILTERCAPS_MINFPYRAMIDALQUAD) != 0);
    00401     textureFilterMinGaussianQuad_ =
    00402         ((capacity_.TextureFilterCaps & D3DPTFILTERCAPS_MINFGAUSSIANQUAD) != 0);
    00403     textureFilterMagPoint_ =
    00404         ((capacity_.TextureFilterCaps & D3DPTFILTERCAPS_MAGFPOINT) != 0);
    00405     textureFilterMagLiner_ =
    00406         ((capacity_.TextureFilterCaps & D3DPTFILTERCAPS_MAGFLINEAR) != 0);
    00407     textureFilterMagAnisotropic_ =
    00408         ((capacity_.TextureFilterCaps & D3DPTFILTERCAPS_MAGFANISOTROPIC) != 0);
    00409     textureFilterMagPyramidalQuad_ =
    00410         ((capacity_.TextureFilterCaps &
    00411         D3DPTFILTERCAPS_MAGFPYRAMIDALQUAD) != 0);
    00412     textureFilterMagGaussianQuad_ =
    00413         ((capacity_.TextureFilterCaps & D3DPTFILTERCAPS_MAGFGAUSSIANQUAD) != 0);
    00414     textureFilterMipmapPoint_ =
    00415         ((capacity_.TextureFilterCaps & D3DPTFILTERCAPS_MIPFPOINT) != 0);
    00416     textureFilterMipmapLiner_ =
    00417         ((capacity_.TextureFilterCaps & D3DPTFILTERCAPS_MIPFLINEAR) != 0);
    00418
    00419     cubeTextureFilterMinPoint_ =
    00420         ((capacity_.CubeTextureFilterCaps & D3DPTFILTERCAPS_MINFPOINT) != 0);
    00421     cubeTextureFilterMinLiner_ =
    00422         ((capacity_.CubeTextureFilterCaps & D3DPTFILTERCAPS_MINFLINEAR) != 0);
    00423     cubeTextureFilterMinAnisotropic_ =
    00424         ((capacity_.CubeTextureFilterCaps &
    00425         D3DPTFILTERCAPS_MINFANISOTROPIC) != 0);
    00426     cubeTextureFilterMinPyramidalQuad_ =
    00427         ((capacity_.CubeTextureFilterCaps &
    00428         D3DPTFILTERCAPS_MINFPYRAMIDALQUAD) != 0);
    00429     cubeTextureFilterMinGaussianQuad_ =
    00430         ((capacity_.CubeTextureFilterCaps &
    00431         D3DPTFILTERCAPS_MINFGAUSSIANQUAD) != 0);
    00432     cubeTextureFilterMagPoint_ =
    00433         ((capacity_.CubeTextureFilterCaps & D3DPTFILTERCAPS_MAGFPOINT) != 0);
    00434     cubeTextureFilterMagLiner_ =
    00435         ((capacity_.CubeTextureFilterCaps & D3DPTFILTERCAPS_MAGFLINEAR) != 0);
    00436     cubeTextureFilterMagAnisotropic_ =
    00437         ((capacity_.CubeTextureFilterCaps &
    00438         D3DPTFILTERCAPS_MAGFANISOTROPIC) != 0);
    00439     cubeTextureFilterMagPyramidalQuad_ =
    00440         ((capacity_.CubeTextureFilterCaps &
    00441         D3DPTFILTERCAPS_MAGFPYRAMIDALQUAD) != 0);
    00442     cubeTextureFilterMagGaussianQuad_ =
    00443         ((capacity_.CubeTextureFilterCaps &
    00444         D3DPTFILTERCAPS_MAGFGAUSSIANQUAD) != 0);
    00445     cubeTextureFilterMipmapPoint_ =
    00446         ((capacity_.CubeTextureFilterCaps & D3DPTFILTERCAPS_MIPFPOINT) != 0);
    00447     cubeTextureFilterMipmapLiner_ =
    00448         ((capacity_.CubeTextureFilterCaps & D3DPTFILTERCAPS_MIPFLINEAR) != 0);
    00449
    00450     volumeTextureFilterMinPoint_ =
    00451         ((capacity_.VolumeTextureFilterCaps & D3DPTFILTERCAPS_MINFPOINT) != 0);
    00452     volumeTextureFilterMinLiner_ =
    00453         ((capacity_.VolumeTextureFilterCaps & D3DPTFILTERCAPS_MINFLINEAR) != 0);
    00454     volumeTextureFilterMinAnisotropic_ =
    00455         ((capacity_.VolumeTextureFilterCaps &
    00456         D3DPTFILTERCAPS_MINFANISOTROPIC) != 0);
    00457     volumeTextureFilterMinPyramidalQuad_ =
    00458         ((capacity_.VolumeTextureFilterCaps &
    00459         D3DPTFILTERCAPS_MINFPYRAMIDALQUAD) != 0);
    00460     volumeTextureFilterMinGaussianQuad_ =
    00461         ((capacity_.VolumeTextureFilterCaps &
    00462         D3DPTFILTERCAPS_MINFGAUSSIANQUAD) != 0);
    00463     volumeTextureFilterMagPoint_ =
    00464         ((capacity_.VolumeTextureFilterCaps & D3DPTFILTERCAPS_MAGFPOINT) != 0);
    00465     volumeTextureFilterMagLiner_ =
    00466         ((capacity_.VolumeTextureFilterCaps & D3DPTFILTERCAPS_MAGFLINEAR) != 0);
    00467     volumeTextureFilterMagAnisotropic_ =
    00468         ((capacity_.VolumeTextureFilterCaps &
    00469         D3DPTFILTERCAPS_MAGFANISOTROPIC) != 0);
    00470     volumeTextureFilterMagPyramidalQuad_ =
    00471         ((capacity_.VolumeTextureFilterCaps &
    00472         D3DPTFILTERCAPS_MAGFPYRAMIDALQUAD) != 0);
    00473     volumeTextureFilterMagGaussianQuad_ =
    00474         ((capacity_.VolumeTextureFilterCaps &
    00475         D3DPTFILTERCAPS_MAGFGAUSSIANQUAD) != 0);
    00476     volumeTextureFilterMipmapPoint_ =
    00477         ((capacity_.VolumeTextureFilterCaps & D3DPTFILTERCAPS_MIPFPOINT) != 0);
    00478     volumeTextureFilterMipmapLiner_ =
    00479         ((capacity_.VolumeTextureFilterCaps & D3DPTFILTERCAPS_MIPFLINEAR) != 0);
    00480
    00481     vertexTextureFilterMinPoint_ =
    00482         ((capacity_.VertexTextureFilterCaps & D3DPTFILTERCAPS_MINFPOINT) != 0);
    00483     vertexTextureFilterMinLiner_ =
    00484         ((capacity_.VertexTextureFilterCaps & D3DPTFILTERCAPS_MINFLINEAR) != 0);
    00485     vertexTextureFilterMinAnisotropic_ =
    00486         ((capacity_.VertexTextureFilterCaps &
    00487         D3DPTFILTERCAPS_MINFANISOTROPIC) != 0);
    00488     vertexTextureFilterMinPyramidalQuad_ =
    00489         ((capacity_.VertexTextureFilterCaps &
    00490         D3DPTFILTERCAPS_MINFPYRAMIDALQUAD) != 0);
    00491     vertexTextureFilterMinGaussianQuad_ =
    00492         ((capacity_.VertexTextureFilterCaps &
    00493         D3DPTFILTERCAPS_MINFGAUSSIANQUAD) != 0);
    00494     vertexTextureFilterMagPoint_ =
    00495         ((capacity_.VertexTextureFilterCaps & D3DPTFILTERCAPS_MAGFPOINT) != 0);
    00496     vertexTextureFilterMagLiner_ =
    00497         ((capacity_.VertexTextureFilterCaps & D3DPTFILTERCAPS_MAGFLINEAR) != 0);
    00498     vertexTextureFilterMagAnisotropic_ =
    00499         ((capacity_.VertexTextureFilterCaps &
    00500         D3DPTFILTERCAPS_MAGFANISOTROPIC) != 0);
    00501     vertexTextureFilterMagPyramidalQuad_ =
    00502         ((capacity_.VertexTextureFilterCaps &
    00503         D3DPTFILTERCAPS_MAGFPYRAMIDALQUAD) != 0);
    00504     vertexTextureFilterMagGaussianQuad_ =
    00505         ((capacity_.VertexTextureFilterCaps &
    00506         D3DPTFILTERCAPS_MAGFGAUSSIANQUAD) != 0);
    00507     vertexTextureFilterMipmapPoint_ =
    00508         ((capacity_.VertexTextureFilterCaps & D3DPTFILTERCAPS_MIPFPOINT) != 0);
    00509     vertexTextureFilterMipmapLiner_ =
    00510         ((capacity_.VertexTextureFilterCaps & D3DPTFILTERCAPS_MIPFLINEAR) != 0);
    00511
    00512     //--------------------------------------------------------------------------
    00513     // テクスチャステージ
    00514     //--------------------------------------------------------------------------
    00515     maxTextureBlendStages_ = capacity_.MaxTextureBlendStages;
    00516     maxSimultaneousTextures_ = capacity_.MaxSimultaneousTextures;
    00517
    00518     textureOperationDisable_ =
    00519         ((capacity_.TextureOpCaps & D3DTEXOPCAPS_DISABLE) != 0);
    00520     textureOperationSelectArg1_ =
    00521         ((capacity_.TextureOpCaps & D3DTEXOPCAPS_SELECTARG1) != 0);
    00522     textureOperationSelectArg2_ =
    00523         ((capacity_.TextureOpCaps & D3DTEXOPCAPS_SELECTARG2) != 0);
    00524     textureOperationModulate_ =
    00525         ((capacity_.TextureOpCaps & D3DTEXOPCAPS_MODULATE) != 0);
    00526     textureOperationModulate2x_ =
    00527         ((capacity_.TextureOpCaps & D3DTEXOPCAPS_MODULATE2X) != 0);
    00528     textureOperationModulate4x_ =
    00529         ((capacity_.TextureOpCaps & D3DTEXOPCAPS_MODULATE4X) != 0);
    00530     textureOperationAdd_ =
    00531         ((capacity_.TextureOpCaps & D3DTEXOPCAPS_ADD) != 0);
    00532     textureOperationAddSigned_ =
    00533         ((capacity_.TextureOpCaps & D3DTEXOPCAPS_ADDSIGNED) != 0);
    00534     textureOperationAddSigned2x_ =
    00535         ((capacity_.TextureOpCaps & D3DTEXOPCAPS_ADDSIGNED2X) != 0);
    00536     textureOperationSubtract_ =
    00537         ((capacity_.TextureOpCaps & D3DTEXOPCAPS_SUBTRACT) != 0);
    00538     textureOperationAddSmooth_ =
    00539         ((capacity_.TextureOpCaps & D3DTEXOPCAPS_ADDSMOOTH) != 0);
    00540     textureOperationBlendDiffuseAlpha_ =
    00541         ((capacity_.TextureOpCaps & D3DTEXOPCAPS_BLENDDIFFUSEALPHA) != 0);
    00542     textureOperationBlendTextureAlpha_ =
    00543         ((capacity_.TextureOpCaps & D3DTEXOPCAPS_BLENDTEXTUREALPHA) != 0);
    00544     textureOperationBlendFactorAlpha_ =
    00545         ((capacity_.TextureOpCaps & D3DTEXOPCAPS_BLENDFACTORALPHA) != 0);
    00546     textureOperationBlendTextureAlphaPM_ =
    00547         ((capacity_.TextureOpCaps & D3DTEXOPCAPS_BLENDTEXTUREALPHAPM) != 0);
    00548     textureOperationBlendCurrentAlpha_ =
    00549         ((capacity_.TextureOpCaps & D3DTEXOPCAPS_BLENDCURRENTALPHA) != 0);
    00550     textureOperationPreModulate_ =
    00551         ((capacity_.TextureOpCaps & D3DTEXOPCAPS_PREMODULATE) != 0);
    00552     textureOperationModulateAlphaAddColor_ =
    00553         ((capacity_.TextureOpCaps & D3DTEXOPCAPS_MODULATEALPHA_ADDCOLOR) != 0);
    00554     textureOperationModulateColorAddAlpha_ =
    00555         ((capacity_.TextureOpCaps & D3DTEXOPCAPS_MODULATECOLOR_ADDALPHA) != 0);
    00556     textureOperationModulateInvAlphaAddColor_ =
    00557         ((capacity_.TextureOpCaps &
    00558         D3DTEXOPCAPS_MODULATEINVALPHA_ADDCOLOR) != 0);
    00559     textureOperationModulateInvColorAddAlpha_ =
    00560         ((capacity_.TextureOpCaps &
    00561         D3DTEXOPCAPS_MODULATEINVCOLOR_ADDALPHA) != 0);
    00562     textureOperationBumpEnvMap_ =
    00563         ((capacity_.TextureOpCaps & D3DTEXOPCAPS_BUMPENVMAP) != 0);
    00564     textureOperationBumpEnvMapLuminance_ =
    00565         ((capacity_.TextureOpCaps & D3DTEXOPCAPS_BUMPENVMAPLUMINANCE) != 0);
    00566     textureOperationDotProduct3_ =
    00567         ((capacity_.TextureOpCaps & D3DTEXOPCAPS_DOTPRODUCT3) != 0);
    00568     textureOperationMultiplyAdd_ =
    00569         ((capacity_.TextureOpCaps & D3DTEXOPCAPS_MULTIPLYADD) != 0);
    00570     textureOperationLerp_ =
    00571         ((capacity_.TextureOpCaps & D3DTEXOPCAPS_LERP) != 0);
    00572
    00573     //--------------------------------------------------------------------------
    00574     // 比較
    00575     //--------------------------------------------------------------------------
    00576     zCompareNever_ =
    00577         ((capacity_.ZCmpCaps & D3DPCMPCAPS_NEVER) != 0);
    00578     zCompareLess_ =
    00579         ((capacity_.ZCmpCaps & D3DPCMPCAPS_LESS) != 0);
    00580     zCompareEqual_ =
    00581         ((capacity_.ZCmpCaps & D3DPCMPCAPS_EQUAL) != 0);
    00582     zCompareLessEqual_ =
    00583         ((capacity_.ZCmpCaps & D3DPCMPCAPS_LESSEQUAL) != 0);
    00584     zCompareGreater_ =
    00585         ((capacity_.ZCmpCaps & D3DPCMPCAPS_GREATER) != 0);
    00586     zCompareNotEqual_ =
    00587         ((capacity_.ZCmpCaps & D3DPCMPCAPS_NOTEQUAL) != 0);
    00588     zCompareGreaterEqual_ =
    00589         ((capacity_.ZCmpCaps & D3DPCMPCAPS_GREATEREQUAL) != 0);
    00590     zCompareAlways_ =
    00591         ((capacity_.ZCmpCaps & D3DPCMPCAPS_ALWAYS) != 0);
    00592
    00593     stencilKeep_ =
    00594         ((capacity_.StencilCaps & D3DSTENCILCAPS_KEEP) != 0);
    00595     stencilZero_ =
    00596         ((capacity_.StencilCaps & D3DSTENCILCAPS_ZERO) != 0);
    00597     stencilReplace_ =
    00598         ((capacity_.StencilCaps & D3DSTENCILCAPS_REPLACE) != 0);
    00599     stencilIncrSat_ =
    00600         ((capacity_.StencilCaps & D3DSTENCILCAPS_INCRSAT) != 0);
    00601     stencilDecrSat_ =
    00602         ((capacity_.StencilCaps & D3DSTENCILCAPS_DECRSAT) != 0);
    00603     stencilInvert_ =
    00604         ((capacity_.StencilCaps & D3DSTENCILCAPS_INVERT) != 0);
    00605     stencilIncr_ =
    00606         ((capacity_.StencilCaps & D3DSTENCILCAPS_INCR) != 0);
    00607     stencilDecr_ =
    00608         ((capacity_.StencilCaps & D3DSTENCILCAPS_DECR) != 0);
    00609     stencilTwoSided_ =
    00610         ((capacity_.StencilCaps & D3DSTENCILCAPS_TWOSIDED) != 0);
    00611
    00612     alphaCompareNever_ =
    00613         ((capacity_.AlphaCmpCaps & D3DPCMPCAPS_NEVER) != 0);
    00614     alphaCompareLess_ =
    00615         ((capacity_.AlphaCmpCaps & D3DPCMPCAPS_LESS) != 0);
    00616     alphaCompareEqual_ =
    00617         ((capacity_.AlphaCmpCaps & D3DPCMPCAPS_EQUAL) != 0);
    00618     alphaCompareLessEqual_ =
    00619         ((capacity_.AlphaCmpCaps & D3DPCMPCAPS_LESSEQUAL) != 0);
    00620     alphaCompareGreater_ =
    00621         ((capacity_.AlphaCmpCaps & D3DPCMPCAPS_GREATER) != 0);
    00622     alphaCompareNotEqual_ =
    00623         ((capacity_.AlphaCmpCaps & D3DPCMPCAPS_NOTEQUAL) != 0);
    00624     alphaCompareGreaterEqual_ =
    00625         ((capacity_.AlphaCmpCaps & D3DPCMPCAPS_GREATEREQUAL) != 0);
    00626     alphaCompareAlways_ =
    00627         ((capacity_.AlphaCmpCaps & D3DPCMPCAPS_ALWAYS) != 0);
    00628
    00629     //--------------------------------------------------------------------------
    00630     // ブレンディング
    00631     //--------------------------------------------------------------------------
    00632     blendSourceZero_ =
    00633         ((capacity_.SrcBlendCaps & D3DPBLENDCAPS_ZERO) != 0);
    00634     blendSourceOne_ =
    00635         ((capacity_.SrcBlendCaps & D3DPBLENDCAPS_ONE) != 0);
    00636     blendSourceSrcColor_ =
    00637         ((capacity_.SrcBlendCaps & D3DPBLENDCAPS_SRCCOLOR) != 0);
    00638     blendSourceInvSrcColor_ =
    00639         ((capacity_.SrcBlendCaps & D3DPBLENDCAPS_INVSRCCOLOR) != 0);
    00640     blendSourceSrcAlpha_ =
    00641         ((capacity_.SrcBlendCaps & D3DPBLENDCAPS_SRCALPHA) != 0);
    00642     blendSourceInvSrcAlpha_ =
    00643         ((capacity_.SrcBlendCaps & D3DPBLENDCAPS_INVSRCALPHA) != 0);
    00644     blendSourceDestAlpha_ =
    00645         ((capacity_.SrcBlendCaps & D3DPBLENDCAPS_DESTALPHA) != 0);
    00646     blendSourceInvDestAlpha_ =
    00647         ((capacity_.SrcBlendCaps & D3DPBLENDCAPS_INVDESTALPHA) != 0);
    00648     blendSourceDestColor_ =
    00649         ((capacity_.SrcBlendCaps & D3DPBLENDCAPS_DESTCOLOR) != 0);
    00650     blendSourceInvDestColor_ =
    00651         ((capacity_.SrcBlendCaps & D3DPBLENDCAPS_INVDESTCOLOR) != 0);
    00652     blendSourceSrcAlphaSat_ =
    00653         ((capacity_.SrcBlendCaps & D3DPBLENDCAPS_SRCALPHASAT) != 0);
    00654     blendSourceBothSrcAlpha_ =
    00655         ((capacity_.SrcBlendCaps & D3DPBLENDCAPS_BOTHSRCALPHA) != 0);
    00656     blendSourceBothInvSrcAlpha_ =
    00657         ((capacity_.SrcBlendCaps & D3DPBLENDCAPS_BOTHINVSRCALPHA) != 0);
    00658     blendSourceBlendFactor_ =
    00659         ((capacity_.SrcBlendCaps & D3DPBLENDCAPS_BLENDFACTOR) != 0);
    00660
    00661     blendDestinationZero_ =
    00662         ((capacity_.DestBlendCaps & D3DPBLENDCAPS_ZERO) != 0);
    00663     blendDestinationOne_ =
    00664         ((capacity_.DestBlendCaps & D3DPBLENDCAPS_ONE) != 0);
    00665     blendDestinationSrcColor_ =
    00666         ((capacity_.DestBlendCaps & D3DPBLENDCAPS_SRCCOLOR) != 0);
    00667     blendDestinationInvSrcColor_ =
    00668         ((capacity_.DestBlendCaps & D3DPBLENDCAPS_INVSRCCOLOR) != 0);
    00669     blendDestinationSrcAlpha_ =
    00670         ((capacity_.DestBlendCaps & D3DPBLENDCAPS_SRCALPHA) != 0);
    00671     blendDestinationInvSrcAlpha_ =
    00672         ((capacity_.DestBlendCaps & D3DPBLENDCAPS_INVSRCALPHA) != 0);
    00673     blendDestinationDestAlpha_ =
    00674         ((capacity_.DestBlendCaps & D3DPBLENDCAPS_DESTALPHA) != 0);
    00675     blendDestinationInvDestAlpha_ =
    00676         ((capacity_.DestBlendCaps & D3DPBLENDCAPS_INVDESTALPHA) != 0);
    00677     blendDestinationDestColor_ =
    00678         ((capacity_.DestBlendCaps & D3DPBLENDCAPS_DESTCOLOR) != 0);
    00679     blendDestinationInvDestColor_ =
    00680         ((capacity_.DestBlendCaps & D3DPBLENDCAPS_INVDESTCOLOR) != 0);
    00681     blendDestinationSrcAlphaSat_ =
    00682         ((capacity_.DestBlendCaps & D3DPBLENDCAPS_SRCALPHASAT) != 0);
    00683     blendDestinationBothSrcAlpha_ =
    00684         ((capacity_.DestBlendCaps & D3DPBLENDCAPS_BOTHSRCALPHA) != 0);
    00685     blendDestinationBothInvSrcAlpha_ =
    00686         ((capacity_.DestBlendCaps & D3DPBLENDCAPS_BOTHINVSRCALPHA) != 0);
    00687     blendDestinationBlendFactor_ =
    00688         ((capacity_.DestBlendCaps & D3DPBLENDCAPS_BLENDFACTOR) != 0);
    00689
    00690     //--------------------------------------------------------------------------
    00691     // ラスタライズ
    00692     //--------------------------------------------------------------------------
    00693     extentsAdjust_ = capacity_.ExtentsAdjust;
    00694     rasterDither_ =
    00695         ((capacity_.RasterCaps & D3DPRASTERCAPS_DITHER) != 0);
    00696     rasterZTest_ =
    00697         ((capacity_.RasterCaps & D3DPRASTERCAPS_ZTEST) != 0);
    00698     rasterFogVertex_ =
    00699         ((capacity_.RasterCaps & D3DPRASTERCAPS_FOGVERTEX) != 0);
    00700     rasterFogTable_ =
    00701         ((capacity_.RasterCaps & D3DPRASTERCAPS_FOGTABLE) != 0);
    00702     rasterMipmapLODBias_ =
    00703         ((capacity_.RasterCaps & D3DPRASTERCAPS_MIPMAPLODBIAS) != 0);
    00704     rasterZBufferLessHSR_ =
    00705         ((capacity_.RasterCaps & D3DPRASTERCAPS_ZBUFFERLESSHSR) != 0);
    00706     rasterFogRange_ =
    00707         ((capacity_.RasterCaps & D3DPRASTERCAPS_FOGRANGE) != 0);
    00708     rasterAnisotropy_ =
    00709         ((capacity_.RasterCaps & D3DPRASTERCAPS_ANISOTROPY) != 0);
    00710     rasterWBuffer_ =
    00711         ((capacity_.RasterCaps & D3DPRASTERCAPS_WBUFFER) != 0);
    00712     rasterWFog_ =
    00713         ((capacity_.RasterCaps & D3DPRASTERCAPS_WFOG) != 0);
    00714     rasterZFog_ =
    00715         ((capacity_.RasterCaps & D3DPRASTERCAPS_ZFOG) != 0);
    00716     rasterColorPerspective_ =
    00717         ((capacity_.RasterCaps & D3DPRASTERCAPS_COLORPERSPECTIVE) != 0);
    00718     rasterScissorTest_ =
    00719         ((capacity_.RasterCaps & D3DPRASTERCAPS_SCISSORTEST) != 0);
    00720     rasterSlopeScaleDepthBias_ =
    00721         ((capacity_.RasterCaps & D3DPRASTERCAPS_SLOPESCALEDEPTHBIAS) != 0);
    00722     rasterDepthBias_ =
    00723         ((capacity_.RasterCaps & D3DPRASTERCAPS_DEPTHBIAS) != 0);
    00724     rasterMultiSampleToggle_ =
    00725         ((capacity_.RasterCaps & D3DPRASTERCAPS_MULTISAMPLE_TOGGLE) != 0);
    00726
    00727     //--------------------------------------------------------------------------
    00728     // 頂点シェーダ
    00729     //--------------------------------------------------------------------------
    00730     vertexShaderMajorVersion_ =
    00731         D3DSHADER_VERSION_MAJOR(capacity_.VertexShaderVersion);
    00732     vertexShaderMinorVersion_ =
    00733         D3DSHADER_VERSION_MINOR(capacity_.VertexShaderVersion);
    00734     maxVertexShaderConst_ = capacity_.MaxVertexShaderConst;
    00735     maxStreamStride_ = capacity_.MaxStreamStride;
    00736     maxVShaderInstructionsExecuted_ = capacity_.MaxVShaderInstructionsExecuted;
    00737     maxVertexShader30InstructionSlots_ =
    00738         capacity_.MaxVertexShader30InstructionSlots;
    00739     vertexShaderDynamicFlowControlDepth_ =
    00740         capacity_.VS20Caps.DynamicFlowControlDepth;
    00741     vertexShaderNumTemps_ =  capacity_.VS20Caps.NumTemps;
    00742     vertexShaderStaticFlowControlDepth_ =
    00743         capacity_.VS20Caps.StaticFlowControlDepth;
    00744     vertexShaderPredication_ =
    00745         ((capacity_.VS20Caps.Caps & D3DVS20CAPS_PREDICATION) != 0);
    00746
    00747     //--------------------------------------------------------------------------
    00748     // ピクセルシェーダ
    00749     //--------------------------------------------------------------------------
    00750     pixelShaderMajorVersion_ =
    00751         D3DSHADER_VERSION_MAJOR(capacity_.PixelShaderVersion);
    00752     pixelShaderMinorVersion_ =
    00753         D3DSHADER_VERSION_MINOR(capacity_.PixelShaderVersion);
    00754     pixelShader1xMaxValue_ = capacity_.PixelShader1xMaxValue;
    00755     maxPShaderInstructionsExecuted_ = capacity_.MaxPShaderInstructionsExecuted;
    00756     maxPixelShader30InstructionSlots_ =
    00757         capacity_.MaxPixelShader30InstructionSlots;
    00758     pixelShaderDynamicFlowControlDepth_ =
    00759         capacity_.PS20Caps.DynamicFlowControlDepth;
    00760     pixelShaderNumTemps_ =  capacity_.PS20Caps.NumTemps;
    00761     pixelShaderStaticFlowControlDepth_ =
    00762         capacity_.PS20Caps.StaticFlowControlDepth;
    00763     pixelShaderNumInstructionSlots_ =
    00764         capacity_.PS20Caps.NumInstructionSlots;
    00765     pixelShaderArbitrarySwizzle_ =
    00766         ((capacity_.PS20Caps.Caps & D3DPS20CAPS_ARBITRARYSWIZZLE) != 0);
    00767     pixelShaderGradientInstructions_ =
    00768         ((capacity_.PS20Caps.Caps & D3DPS20CAPS_GRADIENTINSTRUCTIONS) != 0);
    00769     pixelShaderPredication_ =
    00770         ((capacity_.PS20Caps.Caps & D3DPS20CAPS_PREDICATION) != 0);
    00771     pixelShaderNoDependentReadLimit_ =
    00772         ((capacity_.PS20Caps.Caps & D3DPS20CAPS_NODEPENDENTREADLIMIT) != 0);
    00773     pixelShaderNoTexnstructionLimit_ =
    00774         ((capacity_.PS20Caps.Caps & D3DPS20CAPS_NOTEXINSTRUCTIONLIMIT) != 0);
    00775
    00776 }
    00777 //------------------------------------------------------------------------------
    00778 // 文字列への変換
    00779 String GraphicsDeviceCapacity::toString() const{
    00780     String result, temp, line;
    00781     GraphicsBufferFormat bufferFormat;
    00782     line = "//----------------------------------------"
    00783         "-------------------------------------\n";
    00784
    00785     //--------------------------------------------------------------------------
    00786     // デバイス情報
    00787     //--------------------------------------------------------------------------
    00788     result += line + "//\tデバイス情報\n" + line;
    00789     result += temp.format("\tデバイス\t\t\t\t\t\t%s\n",
    00790         getDeviceName().getBytes());
    00791     result += temp.format("\tドライバ\t\t\t\t\t\t%s\n",
    00792         getDriverName().getBytes());
    00793     result += temp.format("\tデバイス番号\t\t\t\t\t%d\n", getDeviceOrdinal());
    00794     switch(getDeviceType()){
    00795     case D3DDEVTYPE_HAL:
    00796         result += "\tデバイスタイプ\t\t\t\t\tハードウェア\n";
    00797         break;
    00798     case D3DDEVTYPE_REF:
    00799         result += "\tデバイスタイプ\t\t\t\t\tリファレンスラスタライザ\n";
    00800         break;
    00801     case D3DDEVTYPE_SW:
    00802         result += "\tデバイスタイプ\t\t\t\t\tソフトウェア\n";
    00803         break;
    00804     }
    00805     if(isWindowed()){ result += "\tモード\t\t\t\t\t\t\tウィンドウ\n";}
    00806     else{ result += "\tモード\t\t\t\t\t\t\tフルスクリーン\n"; }
    00807     result += temp.format("\t頂点プロセスタイプ\t\t\t\t%s\n",
    00808         getVertexProcessingType().toString().getBytes());
    00809     bufferFormat = getAdapterFormat();
    00810     result += "\tアダプタフォーマット\t\t\t" + bufferFormat.getName() + "\n";
    00811     bufferFormat = getBackBufferFormat();
    00812     result += "\tバックバッファフォーマット\t\t" + bufferFormat.getName() + "\n";
    00813     result += temp.format("\tバックバッファサイズ\t\t\t( %d x %d )\n",
    00814         getBackBufferSize().width, getBackBufferSize().height);
    00815     result += temp.format("\tリフレッシュレート\t\t\t\t%d Hz\n",
    00816         getRefreshRate());
    00817     if(getDepthStencilEnabled()){
    00818         result += "\t深度、ステンシルバッファ\t\t有効\n";
    00819     }else{
    00820         result += "\t深度、ステンシルバッファ\t\t無効\n";
    00821     }
    00822     bufferFormat = getDepthStencilFormat();
    00823     result += "\t深度、ステンシルフォーマット\t" + bufferFormat.getName() + "\n";
    00824     result += "\tプレゼンテーション間隔\t\t\t";
    00825     switch(getPresentationInterval()){
    00826     case D3DPRESENT_INTERVAL_IMMEDIATE: result += "即時\n"; break;
    00827     case D3DPRESENT_INTERVAL_DEFAULT:   result += "デフォルト\n"; break;
    00828     case D3DPRESENT_INTERVAL_ONE:       result += "1垂直同期\n"; break;
    00829     case D3DPRESENT_INTERVAL_TWO:       result += "2垂直同期\n"; break;
    00830     case D3DPRESENT_INTERVAL_THREE:     result += "3垂直同期\n"; break;
    00831     case D3DPRESENT_INTERVAL_FOUR:      result += "4垂直同期\n"; break;
    00832     }
    00833     result += "\tマルチサンプルタイプ\t\t\t";
    00834     switch(getMultiSampleType()){
    00835     case D3DMULTISAMPLE_NONE:           result += "無効\n"; break;
    00836     case D3DMULTISAMPLE_NONMASKABLE:    result += "クォリティ\n"; break;
    00837     case D3DMULTISAMPLE_2_SAMPLES:      result += "2サンプル\n"; break;
    00838     case D3DMULTISAMPLE_3_SAMPLES:      result += "3サンプル\n"; break;
    00839     case D3DMULTISAMPLE_4_SAMPLES:      result += "4サンプル\n"; break;
    00840     case D3DMULTISAMPLE_5_SAMPLES:      result += "5サンプル\n"; break;
    00841     case D3DMULTISAMPLE_6_SAMPLES:      result += "6サンプル\n"; break;
    00842     case D3DMULTISAMPLE_7_SAMPLES:      result += "7サンプル\n"; break;
    00843     case D3DMULTISAMPLE_8_SAMPLES:      result += "8サンプル\n"; break;
    00844     case D3DMULTISAMPLE_9_SAMPLES:      result += "9サンプル\n"; break;
    00845     case D3DMULTISAMPLE_10_SAMPLES:     result += "10サンプル\n"; break;
    00846     case D3DMULTISAMPLE_11_SAMPLES:     result += "11サンプル\n"; break;
    00847     case D3DMULTISAMPLE_12_SAMPLES:     result += "12サンプル\n"; break;
    00848     case D3DMULTISAMPLE_13_SAMPLES:     result += "13サンプル\n"; break;
    00849     case D3DMULTISAMPLE_14_SAMPLES:     result += "14サンプル\n"; break;
    00850     case D3DMULTISAMPLE_15_SAMPLES:     result += "15サンプル\n"; break;
    00851     case D3DMULTISAMPLE_16_SAMPLES:     result += "16サンプル\n"; break;
    00852     }
    00853     result += temp.format("\tマルチサンプルクォリティ\t\t%d\n",
    00854         getMultiSampleQuality());
    00855
    00856     //--------------------------------------------------------------------------
    00857     // デバイス能力
    00858     //--------------------------------------------------------------------------
    00859     result += "\n" + line + "//\tデバイス能力\n" + line;
    00860     result += temp.format("\tマルチレンダーターゲット数\t\t%d\n",
    00861         getNumSimultaneousRTs());
    00862     result += "\tシステムメモリで実行\t\t\t";
    00863     result += supportedString(supportedExecuteSystemMemory());
    00864     result += "\tビデオメモリで実行\t\t\t\t";
    00865     result += supportedString(supportedExecuteVideoMemory());
    00866     result += "\tシステムメモリ上のTL頂点\t\t";
    00867     result += supportedString(supportedTlVertexSystemMemory());
    00868     result += "\tビデオメモリ上のTL頂点\t\t\t";
    00869     result += supportedString(supportedTlVertexVideoMemory());
    00870     result += "\tシステムメモリ上のテクスチャ\t";
    00871     result += supportedString(supportedTextureSystemMemory());
    00872     result += "\tビデオメモリ上のテクスチャ\t\t";
    00873     result += supportedString(supportedTextureVideoMemory());
    00874     result += "\tTL頂点の描画\t\t\t\t\t";
    00875     result += supportedString(supportedDrawPrimTlVertex());
    00876     result += "\tフリップ後のレンダリング\t\t";
    00877     result += supportedString(supportedCanRenderAfterFlip());
    00878     result += "\t非ローカルビデオメモリ\t\t\t";
    00879     result += supportedString(supportedTextureNonLocalVidedMemory());
    00880     result += "\tDrawPrivitives2\t\t\t\t\t";
    00881     result += supportedString(supportedDrawPrimitives2());
    00882     result += "\t独立したテクスチャメモリプール\t";
    00883     result += supportedString(supportedSeparateTextureMemories());
    00884     result += "\tDrawPrimitives2EX\t\t\t\t";
    00885     result += supportedString(supportedDrawPrimitives2EX());
    00886     result += "\tハードウェアT&L\t\t\t\t\t";
    00887     result += supportedString(supportedHwTransformAndLight());
    00888     result += "\tシステムからビデオへのBLT\t\t";
    00889     result += supportedString(supportedCanBltSystemToNonLocal());
    00890     result += "\tハードウェアラスタライズ\t\t";
    00891     result += supportedString(supportedHwRasterization());
    00892     result += "\tピュアデバイス\t\t\t\t\t";
    00893     result += supportedString(supportedPureDevice());
    00894     result += "\tベジェ、Bスプライン\t\t\t\t";
    00895     result += supportedString(supportedQuinticRtPatches());
    00896     result += "\t矩形、三角形パッチ\t\t\t\t";
    00897     result += supportedString(supportedRtPatches());
    00898     result += "\t効率的なハンドル0パッチ\t\t\t";
    00899     result += supportedString(supportedRtPatchHanldeZero());
    00900     result += "\tNパッチ\t\t\t\t\t\t\t";
    00901     result += supportedString(supportedNPatches());
    00902     result += "\tプレゼンテーション間隔即時\t\t";
    00903     result += supportedString(supportedPresentationIntervalImmediate());
    00904     result += "\tプレゼンテーション間隔1垂直同期\t";
    00905     result += supportedString(supportedPresentationIntervalOne());
    00906     result += "\tプレゼンテーション間隔2垂直同期\t";
    00907     result += supportedString(supportedPresentationIntervalTwo());
    00908     result += "\tプレゼンテーション間隔3垂直同期\t";
    00909     result += supportedString(supportedPresentationIntervalThree());
    00910     result += "\tプレゼンテーション間隔4垂直同期\t";
    00911     result += supportedString(supportedPresentationIntervalFour());
    00912     result += "\tハードウェアカーソル\t\t\t";
    00913     result += supportedString(supportedCursorColor());
    00914     result += "\t低解像度ハードウェアカーソル\t";
    00915     result += supportedString(supportedCursorLowRes());
    00916     result += "\tStretchRectMinPointフィルタ\t\t";
    00917     result += supportedString(supportedStretchRectMinPoint());
    00918     result += "\tStretchRectMagPointフィルタ\t\t";
    00919     result += supportedString(supportedStretchRectMagPoint());
    00920     result += "\tStretchRectMinLinearフィルタ\t";
    00921     result += supportedString(supportedStretchRectMinLinear());
    00922     result += "\tStretchRectMagLinearフィルタ\t";
    00923     result += supportedString(supportedStretchRectMagLinear());
    00924
    00925     //--------------------------------------------------------------------------
    00926     // デバイスその他
    00927     //--------------------------------------------------------------------------
    00928     result += "\n" + line + "//\tデバイスその他\n" + line;
    00929     result += temp.format("\tマスターアダプタ番号\t\t\t%d\n",
    00930         getMasterAdapterOrdinal());
    00931     result += temp.format("\tグループ内のアダプタ番号\t\t%d\n",
    00932         getAdapterOrdinalInGroup());
    00933     result += temp.format("\tグループのアダプタ数\t\t\t%d\n",
    00934         getNumberOfAdaptersInGroup());
    00935     result += "\tZマスク\t\t\t\t\t\t\t";
    00936     result += supportedString(supportedMaskZ());
    00937     result += "\tカリング無し\t\t\t\t\t";
    00938     result += supportedString(supportedCullNone());
    00939     result += "\t時計回りカリング\t\t\t\t";
    00940     result += supportedString(supportedCullCW());
    00941     result += "\t反時計回りカリング\t\t\t\t";
    00942     result += supportedString(supportedCullCCW());
    00943     result += "\tカラーチャンネル書き込み\t\t";
    00944     result += supportedString(supportedColorWriteEnable());
    00945     result += "\t正確なポイントクリップ\t\t\t";
    00946     result += supportedString(supportedClipPlaneScaledPoints());
    00947     result += "\t頂点クリップ\t\t\t\t\t";
    00948     result += supportedString(supportedClipTlVerts());
    00949     result += "\tテンポラリテクスチャ引数\t\t";
    00950     result += supportedString(supportedTssArgTemp());
    00951     result += "\tアルファブレンディング\t\t\t";
    00952     result += supportedString(supportedBlendOp());
    00953     result += "\tヌルリファレンス\t\t\t\t";
    00954     result += supportedString(supportedNullReference());
    00955     result += "\t独立した書き込みマスク\t\t\t";
    00956     result += supportedString(supportedIndependentWriteMasks());
    00957     result += "\tテクスチャステージ定数\t\t\t";
    00958     result += supportedString(supportedPerStageConstant());
    00959     result += "\tフォグとスペキュラアルファ\t\t";
    00960     result += supportedString(supportedFogAndSpecularAlpha());
    00961     result += "\tアルファ用ブレンド\t\t\t\t";
    00962     result += supportedString(supportedSeparateAlphaBlend());
    00963     result += "\tMRTに違うZ深度\t\t\t\t\t";
    00964     result += supportedString(supportedMrtIndependentBitDepth());
    00965     result += "\tMRTにピクセルシェーダ後処理\t\t";
    00966     result += supportedString(supportedMrtPostPixelShaderBlending());
    00967     result += "\t頂点フォグのクランプ\t\t\t";
    00968     result += supportedString(supportedFogVertexClamped());
    00969
    00970     //--------------------------------------------------------------------------
    00971     // ドライバ能力
    00972     //--------------------------------------------------------------------------
    00973     result += "\n" + line + "//\tドライバ能力\n" + line;
    00974     result += "\tスキャンラインの読み込み\t\t";
    00975     result += supportedString(supportedReadScanLine());
    00976     result += "\tフルスクリーンガンマ\t\t\t";
    00977     result += supportedString(supportedFullscreenGamma());
    00978     result += "\tキャリブレートガンマ\t\t\t";
    00979     result += supportedString(supportedCanCalibrateGamma());
    00980     result += "\tマネージドリソース\t\t\t\t";
    00981     result += supportedString(supportedCanManageResource());
    00982     result += "\t動的テクスチャ\t\t\t\t\t";
    00983     result += supportedString(supportedDynamicTextures());
    00984     result += "\tミップマップ自動生成\t\t\t";
    00985     result += supportedString(supportedCanAutogenMipmap());
    00986     result += "\tフルスクリーンアルファブレンド\t";
    00987     result += supportedString(supportedAlphaFullscreenFlipOrDiscard());
    00988     result += "\tsRGBプレゼンテーション\t\t\t";
    00989     result += supportedString(supportedLinerToSrgbPresentation());
    00990     result += "\tビデオメモリへのコピー\t\t\t";
    00991     result += supportedString(supportedCopyToVideoMemory());
    00992     result += "\tシステムメモリへのコピー\t\t";
    00993     result += supportedString(supportedCopyToSystemMemory());
    00994
    00995     //--------------------------------------------------------------------------
    00996     // プリミティブ
    00997     //--------------------------------------------------------------------------
    00998     result += "\n" + line + "//\tプリミティブ\n" + line;
    00999     result += temp.format("\t最大点サイズ\t\t\t\t\t%.2f\n", getMaxPointSize());
    01000     result += "\tラインテクスチャ\t\t\t\t";
    01001     result += supportedString(supportedLineTexture());
    01002     result += "\tラインZテスト\t\t\t\t\t";
    01003     result += supportedString(supportedLineZTest());
    01004     result += "\tラインブレンド\t\t\t\t\t";
    01005     result += supportedString(supportedLineBlend());
    01006     result += "\tラインアルファ比較\t\t\t\t";
    01007     result += supportedString(supportedLineAlphaCompare());
    01008     result += "\tラインフォグ\t\t\t\t\t";
    01009     result += supportedString(supportedLineFog());
    01010     result += "\tラインアンチエイリアス\t\t\t";
    01011     result += supportedString(supportedLineAntialias());
    01012
    01013     //--------------------------------------------------------------------------
    01014     // 頂点処理
    01015     //--------------------------------------------------------------------------
    01016     result += "\n" + line + "//\t頂点処理\n" + line;
    01017     result += temp.format("\t最大プリミティブ数\t\t\t\t%d\n",
    01018         getMaxPrimitiveCount());
    01019     result += temp.format("\t最大インデックス数\t\t\t\t%d\n",
    01020         getMaxVertexIndex());
    01021     result += temp.format("\t最大ストリーム数\t\t\t\t%d\n", getMaxStreams());
    01022     result += temp.format("\t最大ライト数\t\t\t\t\t%d\n", getMaxActiveLights());
    01023     result += temp.format("\t最大W値\t\t\t\t\t\t\t%.2e\n", getMaxVertexW());
    01024     result += temp.format("\t最大ブレンド行列数\t\t\t\t%d\n",
    01025         getMaxVertexBlendMatrices());
    01026     result += temp.format("\t最大ブレンド行列インデックス数\t%d\n",
    01027         getMaxVertexBlendMatrixIndex());
    01028     result += temp.format("\tガードバンド左\t\t\t\t\t%.2e\n",
    01029         getGuardBandLeft());
    01030     result += temp.format("\tガードバンド上\t\t\t\t\t%.2e\n", getGuardBandTop());
    01031     result += temp.format("\tガードバンド右\t\t\t\t\t%.2e\n",
    01032         getGuardBandRight());
    01033     result += temp.format("\tガードバンド下\t\t\t\t\t%.2e\n",
    01034         getGuardBandBottom());
    01035     result += temp.format("\t最大ユーザクリップ面\t\t\t%d\n",
    01036         getMaxUserCliplanes());
    01037
    01038     result += "\tTexgen\t\t\t\t\t\t\t";
    01039     result += supportedString(supportedTexGen());
    01040     result += "\tカラーマテリアルソース\t\t\t";
    01041     result += supportedString(supportedMaterialSource());
    01042     result += "\tディレクショナルライト\t\t\t";
    01043     result += supportedString(supportedDirectionalLights());
    01044     result += "\tポジションライト\t\t\t\t";
    01045     result += supportedString(supportedPositionalLights());
    01046     result += "\tローカルビューワ\t\t\t\t";
    01047     result += supportedString(supportedLocalViewer());
    01048     result += "\t頂点トゥイーニング\t\t\t\t";
    01049     result += supportedString(supportedTweening());
    01050     result += "\tスフィアマップ\t\t\t\t\t";
    01051     result += supportedString(supportedTexgenSpheremap());
    01052     result += "\tローカルビューワ外はTexgen不可\t";
    01053     result += supportedString(supportedNoTexgenNonLocalViewer());
    01054
    01055     //--------------------------------------------------------------------------
    01056     // 頂点フォーマット
    01057     //--------------------------------------------------------------------------
    01058     result += "\n" + line + "//\t頂点フォーマット\n" + line;
    01059     result += "\tFVFテクスチャ座標カウントマスク\t";
    01060     result += supportedString(supportedFvfTexCoordCountMask());
    01061     result += "\tFVF頂点に余分な要素を含められる\t";
    01062     result += supportedString(supportedFvfDoNotStripElements());
    01063     result += "\tFVF頂点サイズ\t\t\t\t\t";
    01064     result += supportedString(supportedFvfPSize());
    01065     result += "\tu_byte4宣言\t\t\t\t\t\t";
    01066     result += supportedString(supportedDeclUByte4());
    01067     result += "\tu_byte4N宣言\t\t\t\t\t";
    01068     result += supportedString(supportedDeclUByte4N());
    01069     result += "\tshort2N宣言\t\t\t\t\t\t";
    01070     result += supportedString(supportedDeclShort2N());
    01071     result += "\tshort4N宣言\t\t\t\t\t\t";
    01072     result += supportedString(supportedDeclShort4N());
    01073     result += "\tu_short2N宣言\t\t\t\t\t";
    01074     result += supportedString(supportedDeclUShort2N());
    01075     result += "\tu_short4N宣言\t\t\t\t\t";
    01076     result += supportedString(supportedDeclUShort4N());
    01077     result += "\tuDec3宣言\t\t\t\t\t\t";
    01078     result += supportedString(supportedDeclUDec3());
    01079     result += "\tdec3宣言\t\t\t\t\t\t";
    01080     result += supportedString(supportedDeclDec3());
    01081     result += "\tfloat16_2宣言\t\t\t\t\t";
    01082     result += supportedString(supportedDeclFloat16_2());
    01083     result += "\tfloat16_4宣言\t\t\t\t\t";
    01084     result += supportedString(supportedDeclFloat16_4());
    01085
    01086     //--------------------------------------------------------------------------
    01087     // テッセレーション
    01088     //--------------------------------------------------------------------------
    01089     result += "\n" + line + "//\tテッセレーション\n" + line;
    01090     result += temp.format("\tNパッチ最大分割レベル\t\t\t%.2f\n",
    01091         getMaxNPatchTesselationLevel());
    01092     result += "\tストリームオフセット\t\t\t";
    01093     result += supportedString(supportedStreamOffset());
    01094     result += "\tディスプレースメントNパッチ\t\t";
    01095     result += supportedString(supportedDmapNPatch());
    01096     result += "\t適応型RTパッチ\t\t\t\t\t";
    01097     result += supportedString(supportedAdaptiveTessRTPatch());
    01098     result += "\t適応型Nパッチ\t\t\t\t\t";
    01099     result += supportedString(supportedAdaptiveTessNPatch());
    01100     result += "\tテクスチャからのStretchRect\t\t";
    01101     result += supportedString(supportedCanStretchRectFromTextures());
    01102     result += "\tプレディスプレースドNパッチ\t\t";
    01103     result += supportedString(supportedPreSampledDmapNPatch());
    01104     result += "\tストリームオフセット共有\t\t";
    01105     result += supportedString(supportedVertexElementsCanShareStreamOffset());
    01106
    01107     //--------------------------------------------------------------------------
    01108     // シェーディング
    01109     //--------------------------------------------------------------------------
    01110     result += "\n" + line + "//\tシェーディング\n" + line;
    01111     result += "\tカラーグーロ\t\t\t\t\t";
    01112     result += supportedString(supportedShadeColorGouraudRGB());
    01113     result += "\tスペキュラグーロ\t\t\t\t";
    01114     result += supportedString(supportedShadeSpecularGouraudRGB());
    01115     result += "\tアルファグーロ\t\t\t\t\t";
    01116     result += supportedString(supportedShadeAlphaGouraudBlend());
    01117     result += "\tフォググーロ\t\t\t\t\t";
    01118     result += supportedString(supportedShadeFogGouraud());
    01119
    01120     //--------------------------------------------------------------------------
    01121     // テクスチャ
    01122     //--------------------------------------------------------------------------
    01123     result += "\n" + line + "//\tテクスチャ\n" + line;
    01124     result += temp.format("\t最大テクスチャサイズ\t\t\t( %d x %d )\n",
    01125         getMaxTextureSize().width, getMaxTextureSize().height);
    01126     result += temp.format("\t最大ボリュームテクスチャ辺\t\t%d\n",
    01127         getMaxVolumeExtent());
    01128     result += temp.format("\t最大テクスチャリピート数\t\t%d\n",
    01129         getMaxTextureRepeat());
    01130     result += temp.format("\t最大異方性フィルタ値\t\t\t%d\n",
    01131         getMaxAnisotropy());
    01132     result += temp.format("\t最大テクスチャアスペクト比\t\t%d\n",
    01133         getMaxTextureAspectRaito());
    01134     result += "\tパースペクティブ補正\t\t\t";
    01135     result += supportedString(supportedTexturePerspective());
    01136     result += "\t辺は2の累乗のみ\t\t\t\t\t";
    01137     result += supportedString(supportedTexturePow2());
    01138     result += "\tアルファ\t\t\t\t\t\t";
    01139     result += supportedString(supportedTextureAlpha());
    01140     result += "\t正方形のみ\t\t\t\t\t\t";
    01141     result += supportedString(supportedTextureSquareOnly());
    01142     result += "\tリピートスケール無し\t\t\t";
    01143     result += supportedString(supportedTextureRepeatNotScaledBySize());
    01144     result += "\tアルファパレット\t\t\t\t";
    01145     result += supportedString(supportedTextureAlphaPalette());
    01146     result += "\t辺は2の累乗で無くてよい\t\t\t";
    01147     result += supportedString(supportedTextureNonPow2Conditional());
    01148     result += "\t射影\t\t\t\t\t\t\t";
    01149     result += supportedString(supportedTextureProjected());
    01150     result += "\tキューブマップ\t\t\t\t\t";
    01151     result += supportedString(supportedTextureCubemap());
    01152     result += "\tボリュームマップ\t\t\t\t";
    01153     result += supportedString(supportedTextureVolumemap());
    01154     result += "\tミップマップ\t\t\t\t\t";
    01155     result += supportedString(supportedTextureMipmap());
    01156     result += "\tキューブミップマップ\t\t\t";
    01157     result += supportedString(supportedTextureMipmapCubemap());
    01158     result += "\tボリュームミップマップ\t\t\t";
    01159     result += supportedString(supportedTextureMipmapVolumemap());
    01160     result += "\tキューブマップ辺は2の累乗のみ\t";
    01161     result += supportedString(supportedTextureCubemapPow2());
    01162     result += "\tボリュームマップ辺は2の累乗のみ\t";
    01163     result += supportedString(supportedTextureVolumemapPow2());
    01164     result += "\t射影バンプ環境マップ無し\t\t";
    01165     result += supportedString(supportedTextureNoProjectedBumpEnvironment());
    01166
    01167     //--------------------------------------------------------------------------
    01168     // テクスチャアドレス
    01169     //--------------------------------------------------------------------------
    01170     result += "\n" + line + "//\tテクスチャアドレス\n" + line;
    01171     result += "\tラップ\t\t\t\t\t\t\t";
    01172     result += supportedString(supportedTextureAddressWrap());
    01173     result += "\tミラー\t\t\t\t\t\t\t";
    01174     result += supportedString(supportedTextureAddressMirror());
    01175     result += "\tUVのクランプ\t\t\t\t\t";
    01176     result += supportedString(supportedTextureAddressClamp());
    01177     result += "\t境界色の設定\t\t\t\t\t";
    01178     result += supportedString(supportedTextureAddressBorder());
    01179     result += "\t独立UVモード\t\t\t\t\t";
    01180     result += supportedString(supportedTextureAddressIndependentUV());
    01181     result += "\t1制限ミラー\t\t\t\t\t\t";
    01182     result += supportedString(supportedTextureAddressMirrorOnce());
    01183     result += "\tボリュームラップ\t\t\t\t";
    01184     result += supportedString(supportedVolumeTextureAddressWrap());
    01185     result += "\tボリュームミラー\t\t\t\t";
    01186     result += supportedString(supportedVolumeTextureAddressMirror());
    01187     result += "\tボリュームUVのクランプ\t\t\t";
    01188     result += supportedString(supportedVolumeTextureAddressClamp());
    01189     result += "\tボリューム境界色の設定\t\t\t";
    01190     result += supportedString(supportedVolumeTextureAddressBorder());
    01191     result += "\tボリューム独立UVモード\t\t\t";
    01192     result += supportedString(supportedVolumeTextureAddressIndependentUV());
    01193     result += "\tボリューム1制限ミラー\t\t\t";
    01194     result += supportedString(supportedVolumeTextureAddressMirrorOnce());
    01195
    01196     //--------------------------------------------------------------------------
    01197     // テクスチャフィルタ
    01198     //--------------------------------------------------------------------------
    01199     result += "\n" + line + "//\tテクスチャフィルタ\n" + line;
    01200     result += "\t縮小ポイント\t\t\t\t\t";
    01201     result += supportedString(supportedTextureFilterMinPoint());
    01202     result += "\t縮小線形\t\t\t\t\t\t";
    01203     result += supportedString(supportedTextureFilterMinLiner());
    01204     result += "\t縮小異方性\t\t\t\t\t\t";
    01205     result += supportedString(supportedTextureFilterMinAnisotropic());
    01206     result += "\t縮小ピラミッド\t\t\t\t\t";
    01207     result += supportedString(supportedTextureFilterMinPyramidalQuad());
    01208     result += "\t縮小2次ガウス\t\t\t\t\t";
    01209     result += supportedString(supportedTextureFilterMinGaussianQuad());
    01210     result += "\t拡大ポイント\t\t\t\t\t";
    01211     result += supportedString(supportedTextureFilterMagPoint());
    01212     result += "\t拡大線形\t\t\t\t\t\t";
    01213     result += supportedString(supportedTextureFilterMagLiner());
    01214     result += "\t拡大異方性\t\t\t\t\t\t";
    01215     result += supportedString(supportedTextureFilterMagAnisotropic());
    01216     result += "\t拡大ピラミッド\t\t\t\t\t";
    01217     result += supportedString(supportedTextureFilterMagPyramidalQuad());
    01218     result += "\t拡大2次ガウス\t\t\t\t\t";
    01219     result += supportedString(supportedTextureFilterMagGaussianQuad());
    01220     result += "\tミップマップポイント\t\t\t";
    01221     result += supportedString(supportedTextureFilterMipmapPoint());
    01222     result += "\tミップマップ線形\t\t\t\t";
    01223     result += supportedString(supportedTextureFilterMipmapLiner());
    01224
    01225     result += "\n" + line;
    01226     result += "\tキューブ縮小ポイント\t\t\t";
    01227     result += supportedString(supportedCubeTextureFilterMinPoint());
    01228     result += "\tキューブ縮小線形\t\t\t\t";
    01229     result += supportedString(supportedCubeTextureFilterMinLiner());
    01230     result += "\tキューブ縮小異方性\t\t\t\t";
    01231     result += supportedString(supportedCubeTextureFilterMinAnisotropic());
    01232     result += "\tキューブ縮小ピラミッド\t\t\t";
    01233     result += supportedString(supportedCubeTextureFilterMinPyramidalQuad());
    01234     result += "\tキューブ縮小2次ガウス\t\t\t";
    01235     result += supportedString(supportedCubeTextureFilterMinGaussianQuad());
    01236     result += "\tキューブ拡大ポイント\t\t\t";
    01237     result += supportedString(supportedCubeTextureFilterMagPoint());
    01238     result += "\tキューブ拡大線形\t\t\t\t";
    01239     result += supportedString(supportedCubeTextureFilterMagLiner());
    01240     result += "\tキューブ拡大異方性\t\t\t\t";
    01241     result += supportedString(supportedCubeTextureFilterMagAnisotropic());
    01242     result += "\tキューブ拡大ピラミッド\t\t\t";
    01243     result += supportedString(supportedCubeTextureFilterMagPyramidalQuad());
    01244     result += "\tキューブ拡大2次ガウス\t\t\t";
    01245     result += supportedString(supportedCubeTextureFilterMagGaussianQuad());
    01246     result += "\tキューブミップマップポイント\t";
    01247     result += supportedString(supportedCubeTextureFilterMipmapPoint());
    01248     result += "\tキューブミップマップ線形\t\t";
    01249     result += supportedString(supportedCubeTextureFilterMipmapLiner());
    01250
    01251     result += "\n" + line;
    01252     result += "\tボリューム縮小ポイント\t\t\t";
    01253     result += supportedString(supportedVolumeTextureFilterMinPoint());
    01254     result += "\tボリューム縮小線形\t\t\t\t";
    01255     result += supportedString(supportedVolumeTextureFilterMinLiner());
    01256     result += "\tボリューム縮小異方性\t\t\t";
    01257     result += supportedString(supportedVolumeTextureFilterMinAnisotropic());
    01258     result += "\tボリューム縮小ピラミッド\t\t";
    01259     result += supportedString(supportedVolumeTextureFilterMinPyramidalQuad());
    01260     result += "\tボリューム縮小2次ガウス\t\t\t";
    01261     result += supportedString(supportedVolumeTextureFilterMinGaussianQuad());
    01262     result += "\tボリューム拡大ポイント\t\t\t";
    01263     result += supportedString(supportedVolumeTextureFilterMagPoint());
    01264     result += "\tボリューム拡大線形\t\t\t\t";
    01265     result += supportedString(supportedVolumeTextureFilterMagLiner());
    01266     result += "\tボリューム拡大異方性\t\t\t";
    01267     result += supportedString(supportedVolumeTextureFilterMagAnisotropic());
    01268     result += "\tボリューム拡大ピラミッド\t\t";
    01269     result += supportedString(supportedVolumeTextureFilterMagPyramidalQuad());
    01270     result += "\tボリューム拡大2次ガウス\t\t\t";
    01271     result += supportedString(supportedVolumeTextureFilterMagGaussianQuad());
    01272     result += "\tボリュームミップマップポイント\t";
    01273     result += supportedString(supportedVolumeTextureFilterMipmapPoint());
    01274     result += "\tボリュームミップマップ線形\t\t";
    01275     result += supportedString(supportedVolumeTextureFilterMipmapLiner());
    01276
    01277     result += "\n" + line;
    01278     result += "\t頂点縮小ポイント\t\t\t\t";
    01279     result += supportedString(supportedVertexTextureFilterMinPoint());
    01280     result += "\t頂点縮小線形\t\t\t\t\t";
    01281     result += supportedString(supportedVertexTextureFilterMinLiner());
    01282     result += "\t頂点縮小異方性\t\t\t\t\t";
    01283     result += supportedString(supportedVertexTextureFilterMinAnisotropic());
    01284     result += "\t頂点縮小ピラミッド\t\t\t\t";
    01285     result += supportedString(supportedVertexTextureFilterMinPyramidalQuad());
    01286     result += "\t頂点縮小2次ガウス\t\t\t\t";
    01287     result += supportedString(supportedVertexTextureFilterMinGaussianQuad());
    01288     result += "\t頂点拡大ポイント\t\t\t\t";
    01289     result += supportedString(supportedVertexTextureFilterMagPoint());
    01290     result += "\t頂点拡大線形\t\t\t\t\t";
    01291     result += supportedString(supportedVertexTextureFilterMagLiner());
    01292     result += "\t頂点拡大異方性\t\t\t\t\t";
    01293     result += supportedString(supportedVertexTextureFilterMagAnisotropic());
    01294     result += "\t頂点拡大ピラミッド\t\t\t\t";
    01295     result += supportedString(supportedVertexTextureFilterMagPyramidalQuad());
    01296     result += "\t頂点拡大2次ガウス\t\t\t\t";
    01297     result += supportedString(supportedVertexTextureFilterMagGaussianQuad());
    01298     result += "\t頂点ミップマップポイント\t\t";
    01299     result += supportedString(supportedVertexTextureFilterMipmapPoint());
    01300     result += "\t頂点ミップマップ線形\t\t\t";
    01301     result += supportedString(supportedVertexTextureFilterMipmapLiner());
    01302
    01303     //--------------------------------------------------------------------------
    01304     // テクスチャステージ
    01305     //--------------------------------------------------------------------------
    01306     result += "\n" + line + "//\tテクスチャステージ\n" + line;
    01307     result += temp.format("\t最大テクスチャステージ数\t\t\t\t%d\n",
    01308         getMaxTextureBlendStages());
    01309     result += temp.format("\t最大マルチテクスチャ数\t\t\t\t\t%d\n",
    01310         getMaxSimultaneousTextures());
    01311     result += "\tDisableオペレーション\t\t\t\t\t";
    01312     result += supportedString(supportedTextureOperationDisable());
    01313     result += "\tSelectArg1オペレーション\t\t\t\t";
    01314     result += supportedString(supportedTextureOperationSelectArg1());
    01315     result += "\tSelectArg2オペレーション\t\t\t\t";
    01316     result += supportedString(supportedTextureOperationSelectArg2());
    01317     result += "\tModulateオペレーション\t\t\t\t\t";
    01318     result += supportedString(supportedTextureOperationModulate());
    01319     result += "\tModulate2xオペレーション\t\t\t\t";
    01320     result += supportedString(supportedTextureOperationModulate2x());
    01321     result += "\tModulate4xオペレーション\t\t\t\t";
    01322     result += supportedString(supportedTextureOperationModulate4x());
    01323     result += "\tAddオペレーション\t\t\t\t\t\t";
    01324     result += supportedString(supportedTextureOperationAdd());
    01325     result += "\tAddSignedオペレーション\t\t\t\t\t";
    01326     result += supportedString(supportedTextureOperationAddSigned());
    01327     result += "\tAddSigned2xオペレーション\t\t\t\t";
    01328     result += supportedString(supportedTextureOperationAddSigned2x());
    01329     result += "\tSubtractオペレーション\t\t\t\t\t";
    01330     result += supportedString(supportedTextureOperationSubtract());
    01331     result += "\tAddSmoothオペレーション\t\t\t\t\t";
    01332     result += supportedString(supportedTextureOperationAddSmooth());
    01333     result += "\tBlendDiffuseAlphaオペレーション\t\t\t";
    01334     result += supportedString(supportedTextureOperationBlendDiffuseAlpha());
    01335     result += "\tBlendTextureAlphaオペレーション\t\t\t";
    01336     result += supportedString(supportedTextureOperationBlendTextureAlpha());
    01337     result += "\tBlendFactorAlphaオペレーション\t\t\t";
    01338     result += supportedString(supportedTextureOperationBlendFactorAlpha());
    01339     result += "\tBlendTextureAlphaPMオペレーション\t\t";
    01340     result += supportedString(supportedTextureOperationBlendTextureAlphaPM());
    01341     result += "\tBlendCurrentAlphaオペレーション\t\t\t";
    01342     result += supportedString(supportedTextureOperationBlendCurrentAlpha());
    01343     result += "\tPreModulateオペレーション\t\t\t\t";
    01344     result += supportedString(supportedTextureOperationPreModulate());
    01345     result += "\tModulateAlphaAddColorオペレーション\t\t";
    01346     result += supportedString(supportedTextureOperationModulateAlphaAddColor());
    01347     result += "\tModulateColorAddAlphaオペレーション\t\t";
    01348     result += supportedString(supportedTextureOperationModulateColorAddAlpha());
    01349     result += "\tModulateInvAlphaAddColorオペレーション\t";
    01350     result += supportedString(supportedTextureOperationModulateInvAlphaAddColor());
    01351     result += "\tModulateInvColorAddAlphaオペレーション\t";
    01352     result += supportedString(supportedTextureOperationModulateInvColorAddAlpha());
    01353     result += "\tBumpEnvMapオペレーション\t\t\t\t";
    01354     result += supportedString(supportedTextureOperationBumpEnvMap());
    01355     result += "\tBumpEnvMapLuminanceオペレーション\t\t";
    01356     result += supportedString(supportedTextureOperationBumpEnvMapLuminance());
    01357     result += "\tDotProduct3オペレーション\t\t\t\t";
    01358     result += supportedString(supportedTextureOperationDotProduct3());
    01359     result += "\tMultiplyAddオペレーション\t\t\t\t";
    01360     result += supportedString(supportedTextureOperationMultiplyAdd());
    01361     result += "\tLerpオペレーション\t\t\t\t\t\t";
    01362     result += supportedString(supportedTextureOperationLerp());
    01363
    01364     //--------------------------------------------------------------------------
    01365     // 比較
    01366     //--------------------------------------------------------------------------
    01367     result += "\n" + line + "//\t比較\n" + line;
    01368     result += "\tZ比較Never\t\t\t\t\t\t";
    01369     result += supportedString(supportedZCompareNever());
    01370     result += "\tZ比較Less\t\t\t\t\t\t";
    01371     result += supportedString(supportedZCompareLess());
    01372     result += "\tZ比較Equal\t\t\t\t\t\t";
    01373     result += supportedString(supportedZCompareEqual());
    01374     result += "\tZ比較LessEqual\t\t\t\t\t";
    01375     result += supportedString(supportedZCompareLessEqual());
    01376     result += "\tZ比較Greater\t\t\t\t\t";
    01377     result += supportedString(supportedZCompareGreater());
    01378     result += "\tZ比較NotEqual\t\t\t\t\t";
    01379     result += supportedString(supportedZCompareNotEqual());
    01380     result += "\tZ比較GreaterEqual\t\t\t\t";
    01381     result += supportedString(supportedZCompareGreaterEqual());
    01382     result += "\tZ比較Always\t\t\t\t\t\t";
    01383     result += supportedString(supportedZCompareAlways());
    01384
    01385     result += "\n" + line;
    01386     result += "\tステンシルKeep\t\t\t\t\t";
    01387     result += supportedString(supportedStencilKeep());
    01388     result += "\tステンシルZero\t\t\t\t\t";
    01389     result += supportedString(supportedStencilZero());
    01390     result += "\tステンシルReplace\t\t\t\t";
    01391     result += supportedString(supportedStencilReplace());
    01392     result += "\tステンシルIncrSat\t\t\t\t";
    01393     result += supportedString(supportedStencilIncrSat());
    01394     result += "\tステンシルDecrSat\t\t\t\t";
    01395     result += supportedString(supportedStencilDecrSat());
    01396     result += "\tステンシルInvert\t\t\t\t";
    01397     result += supportedString(supportedStencilInvert());
    01398     result += "\tステンシルIncr\t\t\t\t\t";
    01399     result += supportedString(supportedStencilIncr());
    01400     result += "\tステンシルDecr\t\t\t\t\t";
    01401     result += supportedString(supportedStencilDecr());
    01402     result += "\tステンシルTwoSided\t\t\t\t";
    01403     result += supportedString(supportedStencilTwoSided());
    01404
    01405     result += "\n" + line;
    01406     result += "\tアルファ比較Never\t\t\t\t";
    01407     result += supportedString(supportedAlphaCompareNever());
    01408     result += "\tアルファ比較Less\t\t\t\t";
    01409     result += supportedString(supportedAlphaCompareLess());
    01410     result += "\tアルファ比較Equal\t\t\t\t";
    01411     result += supportedString(supportedAlphaCompareEqual());
    01412     result += "\tアルファ比較LessEqual\t\t\t";
    01413     result += supportedString(supportedAlphaCompareLessEqual());
    01414     result += "\tアルファ比較Greater\t\t\t\t";
    01415     result += supportedString(supportedAlphaCompareGreater());
    01416     result += "\tアルファ比較NotEqual\t\t\t";
    01417     result += supportedString(supportedAlphaCompareNotEqual());
    01418     result += "\tアルファ比較GreaterEqual\t\t";
    01419     result += supportedString(supportedAlphaCompareGreaterEqual());
    01420     result += "\tアルファ比較Always\t\t\t\t";
    01421     result += supportedString(supportedAlphaCompareAlways());
    01422
    01423     //--------------------------------------------------------------------------
    01424     // ブレンディング
    01425     //--------------------------------------------------------------------------
    01426     result += "\n" + line + "//\tブレンディング\n" + line;
    01427     result += "\tソースZero\t\t\t\t\t\t\t";
    01428     result += supportedString(supportedBlendSourceZero());
    01429     result += "\tソースOne\t\t\t\t\t\t\t";
    01430     result += supportedString(supportedBlendSourceOne());
    01431     result += "\tソースSrcColor\t\t\t\t\t\t";
    01432     result += supportedString(supportedBlendSourceSrcColor());
    01433     result += "\tソースInvSrcColor\t\t\t\t\t";
    01434     result += supportedString(supportedBlendSourceInvSrcColor());
    01435     result += "\tソースSrcAlpha\t\t\t\t\t\t";
    01436     result += supportedString(supportedBlendSourceSrcAlpha());
    01437     result += "\tソースInvSrcAlpha\t\t\t\t\t";
    01438     result += supportedString(supportedBlendSourceInvSrcAlpha());
    01439     result += "\tソースDestAlpha\t\t\t\t\t\t";
    01440     result += supportedString(supportedBlendSourceDestAlpha());
    01441     result += "\tソースInvDestAlpha\t\t\t\t\t";
    01442     result += supportedString(supportedBlendSourceInvDestAlpha());
    01443     result += "\tソースDestColor\t\t\t\t\t\t";
    01444     result += supportedString(supportedBlendSourceDestColor());
    01445     result += "\tソースInvDestColor\t\t\t\t\t";
    01446     result += supportedString(supportedBlendSourceInvDestColor());
    01447     result += "\tソースSrcAlphaSat\t\t\t\t\t";
    01448     result += supportedString(supportedBlendSourceSrcAlphaSat());
    01449     result += "\tソースBothSrcAlpha\t\t\t\t\t";
    01450     result += supportedString(supportedBlendSourceBothSrcAlpha());
    01451     result += "\tソースBothInvSrcAlpha\t\t\t\t";
    01452     result += supportedString(supportedBlendSourceBothInvSrcAlpha());
    01453     result += "\tソースBlendFactor\t\t\t\t\t";
    01454     result += supportedString(supportedBlendSourceBlendFactor());
    01455
    01456     result += "\n" + line;
    01457     result += "\tデスティネーションZero\t\t\t\t";
    01458     result += supportedString(supportedBlendDestinationZero());
    01459     result += "\tデスティネーションOne\t\t\t\t";
    01460     result += supportedString(supportedBlendDestinationOne());
    01461     result += "\tデスティネーションSrcColor\t\t\t";
    01462     result += supportedString(supportedBlendDestinationSrcColor());
    01463     result += "\tデスティネーションInvSrcColor\t\t";
    01464     result += supportedString(supportedBlendDestinationInvSrcColor());
    01465     result += "\tデスティネーションSrcAlpha\t\t\t";
    01466     result += supportedString(supportedBlendDestinationSrcAlpha());
    01467     result += "\tデスティネーションInvSrcAlpha\t\t";
    01468     result += supportedString(supportedBlendDestinationInvSrcAlpha());
    01469     result += "\tデスティネーションDestAlpha\t\t\t";
    01470     result += supportedString(supportedBlendDestinationDestAlpha());
    01471     result += "\tデスティネーションInvDestAlpha\t\t";
    01472     result += supportedString(supportedBlendDestinationInvDestAlpha());
    01473     result += "\tデスティネーションDestColor\t\t\t";
    01474     result += supportedString(supportedBlendDestinationDestColor());
    01475     result += "\tデスティネーションInvDestColor\t\t";
    01476     result += supportedString(supportedBlendDestinationInvDestColor());
    01477     result += "\tデスティネーションSrcAlphaSat\t\t";
    01478     result += supportedString(supportedBlendDestinationSrcAlphaSat());
    01479     result += "\tデスティネーションBothSrcAlpha\t\t";
    01480     result += supportedString(supportedBlendDestinationBothSrcAlpha());
    01481     result += "\tデスティネーションBothInvSrcAlpha\t";
    01482     result += supportedString(supportedBlendDestinationBothInvSrcAlpha());
    01483     result += "\tデスティネーションBlendFactor\t\t";
    01484     result += supportedString(supportedBlendDestinationBlendFactor());
    01485
    01486     //--------------------------------------------------------------------------
    01487     // ラスタライズ
    01488     //--------------------------------------------------------------------------
    01489     result += "\n" + line + "//\tラスタライズ\n" + line;
    01490     result += temp.format("\tアンチエイリアス拡張\t\t\t%.2f\n",
    01491         getExtentsAdjust());
    01492     result += "\tディザ\t\t\t\t\t\t\t";
    01493     result += supportedString(supportedRasterDither());
    01494     result += "\tZテスト\t\t\t\t\t\t\t";
    01495     result += supportedString(supportedRasterZTest());
    01496     result += "\t頂点フォグ\t\t\t\t\t\t";
    01497     result += supportedString(supportedRasterFogVertex());
    01498     result += "\tフォグテーブル\t\t\t\t\t";
    01499     result += supportedString(supportedRasterFogTable());
    01500     result += "\tミップマップバイアス\t\t\t";
    01501     result += supportedString(supportedRasterMipmapLODBias());
    01502     result += "\t隠れ面消去\t\t\t\t\t\t";
    01503     result += supportedString(supportedRasterZBufferLessHSR());
    01504     result += "\tレンジフォグ\t\t\t\t\t";
    01505     result += supportedString(supportedRasterFogRange());
    01506     result += "\t異方性フィルタリング\t\t\t";
    01507     result += supportedString(supportedRasterAnisotropy());
    01508     result += "\tWバッファ\t\t\t\t\t\t";
    01509     result += supportedString(supportedRasterWBuffer());
    01510     result += "\tWフォグ\t\t\t\t\t\t\t";
    01511     result += supportedString(supportedRasterWFog());
    01512     result += "\tZフォグ\t\t\t\t\t\t\t";
    01513     result += supportedString(supportedRasterZFog());
    01514     result += "\t色パースペクティブ補正\t\t\t";
    01515     result += supportedString(supportedRasterColorPerspective());
    01516     result += "\tシザーテスト\t\t\t\t\t";
    01517     result += supportedString(supportedRasterScissorTest());
    01518     result += "\tスロープスケール深度バイアス\t";
    01519     result += supportedString(supportedRasterSlopeScaleDepthBias());
    01520     result += "\t深度バイアス\t\t\t\t\t";
    01521     result += supportedString(supportedRasterDepthBias());
    01522     result += "\tマルチサンプル切り替え\t\t\t";
    01523     result += supportedString(supportedRasterMultiSampleToggle());
    01524
    01525
    01526     //--------------------------------------------------------------------------
    01527     // 頂点シェーダ
    01528     //--------------------------------------------------------------------------
    01529     result += "\n" + line + "//\t頂点シェーダ\n" + line;
    01530     result += temp.format("\t頂点シェーダバージョン\t\t\t%d.%d\n",
    01531         getVertexShaderMajorVersion(), getVertexShaderMinorVersion());
    01532     result += temp.format("\t最大頂点シェーダ定数\t\t\t%d\n",
    01533         getMaxVertexShaderConst());
    01534     result += temp.format("\t最大ストリームストライド数\t\t%d\n",
    01535         getMaxStreamStride());
    01536     result += temp.format("\t最大命令実行数\t\t\t\t\t%d\n",
    01537         getMaxVShaderInstructionsExecuted());
    01538     result += temp.format("\t最大命令スロット数\t\t\t\t%d\n",
    01539         getMaxVertexShader30InstructionSlots());
    01540     result += temp.format("\t動的フローネストレベル\t\t\t%d\n",
    01541         getVertexShaderDynamicFlowControlDepth());
    01542     result += temp.format("\tテンポラリ数\t\t\t\t\t%d\n",
    01543         getVertexShaderNumTemps());
    01544     result += temp.format("\t静的フローネストレベル\t\t\t%d\n",
    01545         getVertexShaderStaticFlowControlDepth());
    01546     result += "\tプレディケーション命令\t\t\t";
    01547     result += supportedString(supportedVertexShaderPredication());
    01548
    01549     //--------------------------------------------------------------------------
    01550     // ピクセルシェーダ
    01551     //--------------------------------------------------------------------------
    01552     result += "\n" + line + "//\tピクセルシェーダ\n" + line;
    01553     result += temp.format("\tピクセルシェーダバージョン\t\t%d.%d\n",
    01554         getPixelShaderMajorVersion(), getPixelShaderMinorVersion());
    01555     result += temp.format("\tピクセルシェーダ1x最大値\t\t%.2f\n",
    01556         getPixelShader1xMaxValue());
    01557     result += temp.format("\t最大命令実行数\t\t\t\t\t%d\n",
    01558         getMaxPShaderInstructionsExecuted());
    01559     result += temp.format("\t最大命令スロット数\t\t\t\t%d\n",
    01560         getMaxPixelShader30InstructionSlots());
    01561     result += temp.format("\t動的フローネストレベル\t\t\t%d\n",
    01562         getPixelShaderDynamicFlowControlDepth());
    01563     result += temp.format("\tテンポラリ数\t\t\t\t\t%d\n",
    01564         getPixelShaderNumTemps());
    01565     result += temp.format("\t静的フローネストレベル\t\t\t%d\n",
    01566         getPixelShaderStaticFlowControlDepth());
    01567     result += temp.format("\t命令スロット数\t\t\t\t\t%d\n",
    01568         getPixelShaderNumInstructionSlots());
    01569     result += "\t任意の入れ替え\t\t\t\t\t";
    01570     result += supportedString(supportedPixelShaderArbitrarySwizzle());
    01571     result += "\tグラデーション命令\t\t\t\t";
    01572     result += supportedString(supportedPixelShaderGradientInstructions());
    01573     result += "\tプレディケーション命令\t\t\t";
    01574     result += supportedString(supportedPixelShaderPredication());
    01575     result += "\t従属読み込み無制限\t\t\t\t";
    01576     result += supportedString(supportedPixelShaderNoDependentReadLimit());
    01577     result += "\ttex命令無制限\t\t\t\t\t";
    01578     result += supportedString(supportedPixelShaderNoTexnstructionLimit());
    01579
    01580     //--------------------------------------------------------------------------
    01581     result += "\n" + line;
    01582     return result;
    01583 }
    01584 //------------------------------------------------------------------------------
    01585 } // End of namespace Lamp
    01586 //------------------------------------------------------------------------------