00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
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
00068 deviceOrdinal_ = adapterInfo->getAdapterOrdinal();
00069 Assert(adapterInfo->getAdapterOrdinal() == capacity_.AdapterOrdinal);
00070
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 }
01586