OBSOLETE: This no longer exists in modern builds.

Unsafe Rendering

Entities have the ability to render unsafe, raw, OpenGL. You can do this by having the entity class implement IUnsafeRenderEntity. This is unsafe because you have potential to break the OpenGL state of the game. If you're able to use models or the model manager in place of this, it's highly recommend you do so.

Using Safely

Despite it's name, it does provide some safety features at the cost of performance. For each RenderUnsafe call, you have a certain level of safety via state pushes:

  • The current ModelView matrix (glPushMatrix)
  • The current client attrib state: PushClientAttrib(ClientAttribMask.ClientVertexArrayBit)
  • The current attrib state:
    • AttribMask.EnableBit | AttribMask.DepthBufferBit | AttribMask.LightingBit | AttribMask.TextureBit | AttribMask.ColorBufferBit | AttribMask.CurrentBit
    • See MSDN for documentation on what each of these bits does.