Exemple #1
0
        public void DebugMessageCallback(DebugMessageCallbackFunc Callback)
        {
            DebugMessageCallbackInternalFunc adapter = (int source, int type, uint id, int severity, IntPtr length, IntPtr message, IntPtr userparam)
                                                       =>
            {
                int msgLength = 0;
                if (length.ToInt64() > int.MaxValue - 1)
                {
                    msgLength = int.MaxValue - 1;
                }
                else
                {
                    msgLength = (int)length.ToInt64();
                }

                byte * pMessage = (byte *)message.ToPointer();
                byte[] data     = new byte[msgLength];
                for (int n = 0; n < data.Length && *pMessage != 0; n++)
                {
                    data[n] = *pMessage;
                    pMessage++;
                }
                string strMessage = System.Text.Encoding.UTF8.GetString(data);
                Callback(source, type, (int)id, severity, strMessage);
            };

            DebugMessageCallback(adapter);
        }
Exemple #2
0
 internal void DebugMessageCallback(DebugMessageCallbackInternalFunc Callback)
 {
     _glDebugMessageCallback(System.Runtime.InteropServices.Marshal.GetFunctionPointerForDelegate(Callback), new IntPtr(null));
 }