Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches

◆ ResolveRenderTarget()

unsafe void Microsoft.Xna.Framework.Graphics.GraphicsDevice.ResolveRenderTarget ( int index)
inlineprivate

Definition at line 2055 of file GraphicsDevice.cs.

2056 {
2057 int num = 0;
2058 RenderTargetHelper renderTargetHelper = currentRenderTargets[index];
2059 RenderTargetBinding[] array = currentRenderTargetBindings;
2060 Texture renderTarget = array[index]._renderTarget;
2061 CubeMapFace cubeMapFace = array[index]._cubeMapFace;
2062 renderTarget.isActiveRenderTarget = false;
2063 if (renderTarget.GetComPtr() == null)
2064 {
2065 return;
2066 }
2067 if (_insideScene)
2068 {
2069 IDirect3DDevice9* intPtr = pComPtr;
2070 ((delegate* unmanaged[Stdcall, Stdcall]<IntPtr, int>)(int)(*(uint*)(*(int*)intPtr + 168)))((nint)intPtr);
2071 }
2072 IDirect3DSurface9* ptr = renderTargetHelper.GetDestinationSurface(cubeMapFace, 0);
2073 IDirect3DSurface9* pRenderTargetSurface = renderTargetHelper.pRenderTargetSurface;
2074 if (pRenderTargetSurface != null)
2075 {
2076 IDirect3DSurface9* ptr2 = pRenderTargetSurface;
2077 IDirect3DDevice9* ptr3 = pComPtr;
2078 int num2 = ((delegate* unmanaged[Stdcall, Stdcall]<IntPtr, IDirect3DSurface9*, tagRECT*, IDirect3DSurface9*, tagRECT*, _D3DTEXTUREFILTERTYPE, int>)(int)(*(uint*)(*(int*)ptr3 + 136)))((nint)ptr3, ptr2, null, ptr, null, (_D3DTEXTUREFILTERTYPE)2);
2079 if (num2 >= 0)
2080 {
2081 num = num2;
2082 }
2083 else
2084 {
2085 IDirect3DDevice9* ptr4 = pComPtr;
2086 int num3 = ((delegate* unmanaged[Stdcall, Stdcall]<IntPtr, IDirect3DSurface9*, tagRECT*, IDirect3DSurface9*, tagRECT*, _D3DTEXTUREFILTERTYPE, int>)(int)(*(uint*)(*(int*)ptr4 + 136)))((nint)ptr4, ptr2, null, ptr, null, (_D3DTEXTUREFILTERTYPE)0);
2087 num = ((num3 < 0) ? _003CModule_003E.D3DXLoadSurfaceFromSurface(ptr, null, null, ptr2, null, null, uint.MaxValue, 0u) : num3);
2088 }
2089 }
2090 uint levelCount = (uint)renderTarget.LevelCount;
2091 uint num4 = 1u;
2092 if (1 < levelCount)
2093 {
2094 do
2095 {
2096 if (num >= 0)
2097 {
2098 IDirect3DSurface9* destinationSurface = renderTargetHelper.GetDestinationSurface(cubeMapFace, (int)num4);
2099 IDirect3DDevice9* ptr5 = pComPtr;
2100 int num5 = ((delegate* unmanaged[Stdcall, Stdcall]<IntPtr, IDirect3DSurface9*, tagRECT*, IDirect3DSurface9*, tagRECT*, _D3DTEXTUREFILTERTYPE, int>)(int)(*(uint*)(*(int*)ptr5 + 136)))((nint)ptr5, ptr, null, destinationSurface, null, (_D3DTEXTUREFILTERTYPE)2);
2101 if (num5 >= 0)
2102 {
2103 num = num5;
2104 }
2105 else
2106 {
2107 ptr5 = pComPtr;
2108 num5 = ((delegate* unmanaged[Stdcall, Stdcall]<IntPtr, IDirect3DSurface9*, tagRECT*, IDirect3DSurface9*, tagRECT*, _D3DTEXTUREFILTERTYPE, int>)(int)(*(uint*)(*(int*)ptr5 + 136)))((nint)ptr5, ptr, null, destinationSurface, null, (_D3DTEXTUREFILTERTYPE)0);
2109 num = ((num5 < 0) ? _003CModule_003E.D3DXLoadSurfaceFromSurface(destinationSurface, null, null, ptr, null, null, uint.MaxValue, 0u) : num5);
2110 }
2111 if (ptr != null)
2112 {
2113 IDirect3DSurface9* intPtr2 = ptr;
2114 ((delegate* unmanaged[Stdcall, Stdcall]<IntPtr, uint>)(int)(*(uint*)(*(int*)intPtr2 + 8)))((nint)intPtr2);
2115 }
2116 ptr = destinationSurface;
2117 }
2118 num4++;
2119 }
2120 while (num4 < levelCount);
2121 }
2122 if (ptr != null)
2123 {
2124 IDirect3DSurface9* intPtr3 = ptr;
2125 ((delegate* unmanaged[Stdcall, Stdcall]<IntPtr, uint>)(int)(*(uint*)(*(int*)intPtr3 + 8)))((nint)intPtr3);
2126 }
2127 if (_insideScene)
2128 {
2129 IDirect3DDevice9* intPtr4 = pComPtr;
2130 ((delegate* unmanaged[Stdcall, Stdcall]<IntPtr, int>)(int)(*(uint*)(*(int*)intPtr4 + 164)))((nint)intPtr4);
2131 }
2132 if (num < 0)
2133 {
2134 throw GraphicsHelpers.GetExceptionFromResult((uint)num);
2135 }
2136 }

References Microsoft.Xna.Framework.Graphics.GraphicsDevice._insideScene, System.array, Microsoft.Xna.Framework.Graphics.GraphicsDevice.currentRenderTargetBindings, Microsoft.Xna.Framework.Graphics.GraphicsDevice.currentRenderTargets, Microsoft.Xna.Framework.Graphics.Texture.GetComPtr(), Microsoft.Xna.Framework.Graphics.RenderTargetHelper.GetDestinationSurface(), Microsoft.Xna.Framework.Graphics.GraphicsHelpers.GetExceptionFromResult(), System.index, Microsoft.Xna.Framework.Graphics.Texture.LevelCount, Microsoft.Xna.Framework.Graphics.GraphicsDevice.pComPtr, and Microsoft.Xna.Framework.Graphics.RenderTargetHelper.pRenderTargetSurface.

Referenced by Microsoft.Xna.Framework.Graphics.GraphicsDevice.SetRenderTargets().