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

◆ Apply()

unsafe void Microsoft.Xna.Framework.Graphics.EffectPass.Apply ( )
inline

Definition at line 84 of file EffectPass.cs.

85 {
86 Effect parent = _technique._parent;
87 IntPtr pComPtr = (IntPtr)parent.pComPtr;
88 Helpers.CheckDisposed(parent, pComPtr);
89 if (parent._currentTechnique != _technique)
90 {
91 throw new InvalidOperationException(FrameworkResources.NotCurrentTechnique);
92 }
93 parent.OnApply();
94 ID3DXEffect* pComPtr2 = parent.pComPtr;
95 GraphicsDevice graphicsDevice = parent.GraphicsDevice;
96 EffectPass activePass = graphicsDevice.activePass;
97 int num;
98 if (activePass == this)
99 {
100 num = ((delegate* unmanaged[Stdcall, Stdcall]<IntPtr, int>)(int)(*(uint*)(*(int*)pComPtr2 + 260)))((nint)pComPtr2);
101 }
102 else
103 {
104 activePass?.EndPass();
105 System.Runtime.CompilerServices.Unsafe.SkipInit(out uint num2);
106 num = ((delegate* unmanaged[Stdcall, Stdcall]<IntPtr, uint*, uint, int>)(int)(*(uint*)(*(int*)pComPtr2 + 252)))((nint)pComPtr2, &num2, 1u);
107 if (num >= 0)
108 {
109 num = ((delegate* unmanaged[Stdcall, Stdcall]<IntPtr, uint, int>)(int)(*(uint*)(*(int*)pComPtr2 + 256)))((nint)pComPtr2, (uint)_index);
110 if (num >= 0)
111 {
112 graphicsDevice.activePass = this;
113 if (_stateFlags != 0)
114 {
116 }
117 }
118 else
119 {
120 ((delegate* unmanaged[Stdcall, Stdcall]<IntPtr, int>)(int)(*(uint*)(*(int*)pComPtr2 + 268)))((nint)pComPtr2);
121 graphicsDevice.activePass = null;
122 }
123 }
124 else
125 {
126 graphicsDevice.activePass = null;
127 }
128 }
129 StateTrackerDevice* pStateTracker = graphicsDevice.pStateTracker;
130 if (((byte*)pStateTracker)[104] != 0)
131 {
132 ((byte*)pStateTracker)[104] = 0;
133 graphicsDevice._profileCapabilities.ThrowNotSupportedException(FrameworkResources.ProfileVertexTextureFormatNotSupported, *(SurfaceFormat*)((byte*)pStateTracker + 108));
134 }
135 if (num < 0)
136 {
137 throw GraphicsHelpers.GetExceptionFromResult((uint)num);
138 }
139 }
unsafe EffectPass(ID3DXBaseEffect *parent, EffectTechnique technique, sbyte *Pass, int index)
Definition EffectPass.cs:34

References Microsoft.Xna.Framework.Graphics.Effect._currentTechnique, Microsoft.Xna.Framework.Graphics.EffectPass._index, Microsoft.Xna.Framework.Graphics.EffectTechnique._parent, Microsoft.Xna.Framework.Graphics.GraphicsDevice._profileCapabilities, Microsoft.Xna.Framework.Graphics.EffectPass._stateFlags, Microsoft.Xna.Framework.Graphics.EffectPass._technique, Microsoft.Xna.Framework.Graphics.GraphicsDevice.activePass, Microsoft.Xna.Framework.Helpers.CheckDisposed(), Microsoft.Xna.Framework.Graphics.EffectPass.EndPass(), Microsoft.Xna.Framework.Graphics.GraphicsHelpers.GetExceptionFromResult(), Microsoft.Xna.Framework.Graphics.GraphicsResource.GraphicsDevice, Microsoft.Xna.Framework.FrameworkResources.NotCurrentTechnique, Microsoft.Xna.Framework.Graphics.Effect.OnApply(), Microsoft.Xna.Framework.Graphics.Effect.pComPtr, Microsoft.Xna.Framework.FrameworkResources.ProfileVertexTextureFormatNotSupported, Microsoft.Xna.Framework.Graphics.GraphicsDevice.pStateTracker, Microsoft.Xna.Framework.Graphics.EffectPass.SyncEffectState(), and Microsoft.Xna.Framework.Graphics.ProfileCapabilities.ThrowNotSupportedException().

Referenced by Terraria.Graphics.Shaders.ShaderData.Apply(), and Terraria.GameContent.AnOutlinedDrawRenderTargetContent.HandleUseReqest().