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 //------------------------------------------------------------------------------

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