Click or drag to resize

TextureCache Class

An application-wide cache of textures whose pixels live in memory rather than in a file on disk.

Rhino identifies a texture by a name. Normally that name is the path of an image file, but it does not have to be: a name registered here shadows the file system, so any texture that refers to the name - a Texture, a DisplayMaterial, a Material - draws the pixels registered here instead of reading a file.

Calling Set(String, Bitmap) again with the same name replaces the pixels in place.

Inheritance Hierarchy
SystemObject
  Rhino.DisplayTextureCache

Namespace:  Rhino.Display
Assembly:  RhinoCommon (in RhinoCommon.dll)
Since: 9.0
Syntax
public static class TextureCache

The TextureCache type exposes the following members.

Methods
  NameDescription
Public methodStatic memberContains
Determines whether a texture is registered under the given name.
Public methodStatic memberGetSize
Gets the pixel size of the texture registered under the given name.
Public methodStatic memberRemove
Removes the texture registered under the given name and frees its pixels.

Anything still pointing at the name falls back to looking for an image file called that, so remove a name only once nothing is drawing it.

Public methodStatic memberSet
Registers, or replaces the pixels of, the in-memory texture with the given name.

The bitmap's pixels are copied, so the caller stays free to keep painting into the same bitmap and call this again. Replacing the pixels of a name that is already in use invalidates the copy the display holds on the GPU, so the new pixels appear on the next redraw of any viewport that draws the texture.

Top
Remarks
The cache is per-session and per-application, not per-document: names are shared by every open document and nothing here is saved in the 3dm file. Entries are held until Remove(String) is called, so a tool that creates names dynamically should remove the ones it is finished with.
Examples
var bitmap = new System.Drawing.Bitmap(512, 512);
// ...paint into bitmap...
Rhino.Display.TextureCache.Set("MyPaintTool:canvas", bitmap);
material.SetBitmapTexture("MyPaintTool:canvas");
doc.Views.Redraw();
See Also