示例#1
0
        private static void LabelObject(ObjectLabelIdentifier id, int obj, string name)
        {
            GL.ObjectLabel(id, obj, name.Length, name);

            ErrorCode error = GL.GetError();
            //F*****g ignore the error, not sure why it triggers always
        }
示例#2
0
        internal static unsafe void SetObjectLabel(ObjectLabelIdentifier identifier, uint target, string name)
        {
            if (HasGlObjectLabel)
            {
                int byteCount = Encoding.UTF8.GetByteCount(name);
                if (MaxLabelLength == null)
                {
                    int maxLabelLength = -1;
                    glGetIntegerv(GetPName.MaxLabelLength, &maxLabelLength);
                    CheckLastError();
                    MaxLabelLength = maxLabelLength;
                }
                if (byteCount >= MaxLabelLength)
                {
                    name      = name.Substring(0, MaxLabelLength.Value - 4) + "...";
                    byteCount = Encoding.UTF8.GetByteCount(name);
                }

                byte *utf8Ptr = stackalloc byte[byteCount];
                fixed(char *namePtr = name)
                {
                    Encoding.UTF8.GetBytes(namePtr, name.Length, utf8Ptr, byteCount);
                    glObjectLabel(identifier, target, (uint)byteCount, utf8Ptr);
                    CheckLastError();
                }
            }
        }
示例#3
0
文件: GLObject.cs 项目: h3tch/ProtoFX
        /// <summary>
        /// Get debug label to the specified OpenGL object.
        /// </summary>
        /// <param name="type">OpenGL object type</param>
        /// <param name="glname">OpenGL object name</param>
        /// <returns>Returns the debug string of the object if specified.</returns>
        public static string GetLabel(ObjectLabelIdentifier type, int glname)
        {
            int length = 64;
            var label  = new StringBuilder(length);

            GL.GetObjectLabel(type, glname, length, out length, label);
            return(label.ToString());
        }
示例#4
0
        private void _objectLabelMaybe(ObjectLabelIdentifier identifier, OGLHandle name, string label)
        {
            if (!HasKHRDebug)
            {
                return;
            }

            GL.ObjectLabel(identifier, name.Handle, label.Length, label);
        }
示例#5
0
 public static string GetObjectLabel(ObjectLabelIdentifier identifier, uint handle)
 {
     if (MAX_LABEL_LENGTH == 0)
     {
         // One-time initialization.
         MAX_LABEL_LENGTH = GL.GetInteger(GLEnum.MaxLabelLength);
         LABEL_BUFFER     = new string(' ', MAX_LABEL_LENGTH);
     }
     GL.GetObjectLabel((GLEnum)identifier, handle, (uint)MAX_LABEL_LENGTH, out var length, out LABEL_BUFFER);
     return(LABEL_BUFFER.Substring(0, (int)length));
 }
示例#6
0
        private void _objectLabelMaybe(ObjectLabelIdentifier identifier, int name, string label)
        {
            DebugTools.Assert(label != null);

            if (!HasKHRDebug)
            {
                return;
            }

            GL.ObjectLabel(identifier, name, label.Length, label);
        }
示例#7
0
        internal static unsafe void SetObjectLabel(ObjectLabelIdentifier identifier, uint target, string name)
        {
            int   byteCount = Encoding.UTF8.GetByteCount(name);
            byte *utf8Ptr   = stackalloc byte[byteCount];

            fixed(char *namePtr = name)
            {
                Encoding.UTF8.GetBytes(namePtr, name.Length, utf8Ptr, byteCount);
                glObjectLabel(identifier, target, (uint)byteCount, utf8Ptr);
                CheckLastError();
            }
        }
示例#8
0
        private void ObjectLabelMaybe(ObjectLabelIdentifier identifier, uint name, string label)
        {
            if (label == null)
            {
                return;
            }

            if (!_hasKhrDebug)
            {
                return;
            }

            GL.ObjectLabel(identifier, name, label.Length, label);
        }
示例#9
0
        private void ObjectLabelMaybe(ObjectLabelIdentifier identifier, uint name, string?label)
        {
            if (label == null)
            {
                return;
            }

            if (!_hasGLKhrDebug)
            {
                return;
            }

            if (_isGLKhrDebugESExtension)
            {
                GL.Khr.ObjectLabel((ObjectIdentifier)identifier, name, label.Length, label);
            }
            else
            {
                GL.ObjectLabel(identifier, name, label.Length, label);
            }
        }
示例#10
0
 public static void LabelObject(ObjectLabelIdentifier objLabelIdent, int glObject, string name)
 {
     GL.ObjectLabel(objLabelIdent, glObject, name.Length, name);
 }
示例#11
0
 public static void glObjectLabel(ObjectLabelIdentifier identifier, uint name, uint length, byte *label)
 => p_glObjectLabel(identifier, name, length, label);
示例#12
0
 private void _objectLabelMaybe(ObjectLabelIdentifier identifier, OGLHandle name, string label)
 {
     _objectLabelMaybe(identifier, name.Handle, label);
 }
示例#13
0
 public virtual void SetObjectLabel(ObjectLabelIdentifier identifier, int name, string label)
 {
 }
示例#14
0
 public static void SetObjectLabel(ObjectLabelIdentifier identifier, uint handle, string label)
 => GL.ObjectLabel((GLEnum)identifier, handle, (uint)label.Length, label);
示例#15
0
 public override void SetObjectLabel(ObjectLabelIdentifier identifier, int name, string label)
 {
     GL.ObjectLabel(identifier, name, label.Length, label);
 }
示例#16
0
 public static void LabelObject(ObjectLabelIdentifier objLabelIdent, int glObject, string name)
 {
     Console.WriteLine(objLabelIdent.ToString()+ "   ------  " + name);
     
     GL.ObjectLabel(objLabelIdent, glObject, name.Length, name);
 }
示例#17
0
 private void ObjectLabelMaybe(ObjectLabelIdentifier identifier, GLHandle name, string?label)
 {
     ObjectLabelMaybe(identifier, name.Handle, label);
 }
示例#18
0
        /// <summary>
        /// Assigns a debug label to an OpenGL object. The object's handle is automatically added to the label.
        /// </summary>
        /// <param name="handleNamespace">The namespace of the object handle</param>
        /// <param name="handle">Object's handle</param>
        /// <param name="name">Label of the object</param>
        public static void SetObjectLabel(ObjectLabelIdentifier handleNamespace, int handle, string name)
        {
            string label = handleNamespace.ToString() + ": " + name + " (handle: " + handle + ")";

            GL.ObjectLabel(handleNamespace, handle, label.Length, label);
        }
示例#19
0
 public static void LabelObject(ObjectLabelIdentifier objLabelIdent, int glObject, string name)
 {
     // OpenGL 3.3 doesn't have glObjectLabel as that is a 4.3 feature. So we do nothing here...
     // GL.ObjectLabel(objLabelIdent, glObject, name.Length, name);
 }