private static extern int D3DXCompileShader64Bit([MarshalAs(UnmanagedType.LPStr)] string pSrcData, int dataLen, IntPtr pDefines, IntPtr includes, [MarshalAs(UnmanagedType.LPStr)] string pFunctionName, [MarshalAs(UnmanagedType.LPStr)] string pTarget, int flags, out ID3DXBuffer ppShader, out ID3DXBuffer ppErrorMsgs, out IntPtr ppConstantTable);
private static extern int D3DX10CompileFromMemory([MarshalAs(UnmanagedType.LPStr)] string pSrcData, int dataLen, [MarshalAs(UnmanagedType.LPStr)] string pFilename, IntPtr pDefines, IntPtr pInclude, [MarshalAs(UnmanagedType.LPStr)] string pFunctionName, [MarshalAs(UnmanagedType.LPStr)] string pProfile, int flags1, int flags2, IntPtr pPump, out ID3DXBuffer ppShader, out ID3DXBuffer ppErrorMsgs, ref int pHresult);
public static byte[] AsByteArray(this ID3DXBuffer buffer) { VerifyNonNullArgument( buffer, "buffer"); var buf = new byte[(int)buffer.GetBufferSize()]; Marshal.Copy( buffer.GetBufferPointer(), buf, 0, (int)buffer.GetBufferSize()); return(buf); }
public static string AsAnsiString(this ID3DXBuffer buffer) { VerifyNonNullArgument( buffer, "buffer"); unsafe { var ptr = (sbyte *)buffer.GetBufferPointer(); var size = (int)buffer.GetBufferSize(); if (ptr[size - 1] == 0) { // skip the last null char size = Math.Max( checked (size - 1), 0); } return(new string( ptr, 0, size)); } }