You can create a custom glyph by deriving from AcGiGlyph and registering the glyph with your custom object snap mode. Two functions need to be implemented in your derived class: setLocation() and viewportDraw(). The setLocation() function sets the location of the glyph to be drawn, and the viewportDraw() function draws the glyph.
There are a few requirements for the graphics used in viewportDraw() that must be observed. The graphics should be display-aligned, and they should not be affected by entity orientation, the current UCS, or the current view transform. Additionally, the graphics should be scaled to fit the current AutoSnap marker size, which can be determined by using the function acdbCustomOsnapManager()->osnapGlyphSize().