MaxSDK::Graphics Namespace Reference

Namespaces

 Utilities
 

Classes

class  ARefObject
 This class implemented IRefObject interfaces. More...
 
class  AtomicRefCounter
 this class contains an integer which is initialized to zero. More...
 
class  AutoRestoreRenderNodeMaterial
 This is a utility class for assigning customized solid material to the solid mesh render item of a render node when generating render items from IMeshDisplay2::GetRenderItems() during the execution of BaseObject::UpdatePerNodeItems() More...
 
class  AutoRestoreWorldMatrix
 
class  BaseMaterialHandle
 This is base graphics material class. More...
 
class  BaseRasterHandle
 This is our base graphics raster resource class. More...
 
class  BlendState
 This class holds the blend state for all render targets. More...
 
class  ConnectionPoint
 ConnectionPoint is the base class that manages the connections between view fragments. More...
 
struct  ConsolidationData
 This a structure that holds parameters used for render item consolidation. More...
 
class  CustomRenderItemHandle
 CustomRenderItemHandle is a wrapper of ICustomRenderItem. More...
 
class  CustomRenderStageHandle
 CustomRenderStageHandle is the base wrapper class of the custom render stage. More...
 
class  DefaultLifeTimePolicy
 
class  DepthStencilState
 This class encapsulates a complete depth buffer and stencil buffer state. More...
 
struct  DeviceCaps
 This struct is used to store some device related information. More...
 
class  DisplayCallbackContext
 This class contains context which can be queried in IDisplayCallback. More...
 
class  DisplayTextureHelper
 Used for creating texture handles (TexHandle) and updating texture data managed by the viewport display system. More...
 
class  DisplayTextureHelperExt
 DisplayTextureHelperExt extends DisplayTextureHelper to support more textures Used for creating stage texture handles (TexHandle) and updating texture data managed by the viewport display system. More...
 
class  DrawContext
 Typically ICustomRenderItem::Draw() and ICustomRenderItem::HitTest() bring instance of this class as parameter. More...
 
class  EffectHandle
 EffectHandle is a class provides features similar as Effect in Direct3D This class is used for viewport display and Quicksilver. More...
 
class  EffectInstanceHandle
 EffectInstanceHandle is a class which stores values of parameters in an effect. More...
 
struct  EvaluationContext
 This struct is a collection of elements that are necessary in a render view. More...
 
class  Fragment
 Fragment is the base computation unit in the view system. More...
 
class  FragmentGraph
 FragmentGraph is a graph consisting of fragment nodes. More...
 
struct  FragmentMessageParameter
 Message parameters. More...
 
class  GenerateMeshRenderItemsContext
 This class contains all information that will be passed to Mesh::GenerateRenderItems() or MNMesh::GenerateRenderItems() to update its display data. More...
 
class  GeometryRenderItemHandle
 This is a special render item which used only by Mesh/MNMesh. More...
 
class  HitTestContext
 This is a hit test context class. More...
 
class  HLSLMaterialHandle
 HLSLMaterialHandle is a material class to support HLSL custom material. More...
 
class  ICamera
 The interface of a render camera for nitrous viewport. More...
 
class  IConsolidationKey
 This class is used as a key for a hash table. More...
 
class  IConsolidationRenderItem
 This class defines a consolidation render item, which is used to improve rendering performance by batching similar render items together. More...
 
class  IConsolidationStrategy
 This class defines a strategy to consolidate one type of consolidation key. More...
 
class  ICustomRenderItem
 This class is used to customize the behavior of a render item. More...
 
class  IDisplayCallback
 A developer would implement this interface to allow immediate mode drawing of primitives, text and markers. More...
 
class  IDisplayManager
 A core interface for accessing properties of the graphics library introduced in 3ds Max 2012. More...
 
class  IDisposable
 
class  IFixedViewportPipeline
 This class provide some facility to add some extended behavior to the fixed render pipeline. More...
 
class  IHLSLMaterialTranslator
 Facilitates translation of material parameter values to their shaders representation. More...
 
class  IMeshDisplay2
 Use this interface to query the per node related render items from a mesh or mnesh. More...
 
class  ImmediateFragment
 ImmediateFragment is a class which let application render primitives outside the render loop. More...
 
class  ImmediateRenderItemHandle
 This class is used to wrap user defined IDisplayCallback class. More...
 
class  IndexBufferHandle
 IndexBufferHandle is a memory buffer that contain index data. More...
 
class  Input
 Class that stores input information for a fragment. More...
 
class  IObjectDisplay2
 To give object plugins better control of display, now object plugins can expose IObjectDisplay2 interface. More...
 
class  IParameterTranslator
 Facilitates translation of material and texture map parameter values to their shaders representation. More...
 
class  IPrimitiveRenderer
 This class is used to draw simple primitives, markers, text with given material and transformations. More...
 
class  IRefObject
 This class is similar to IUnknown in COM. More...
 
class  IRenderGeometry
 IRenderGeometry is a presentation of geometry. More...
 
class  IRenderItemContainer
 A render item container, it provides various methods to access the contained render items. More...
 
class  IRenderStateManager
 IRenderStateManager controls primitive renderer's current render style. More...
 
class  IRenderView
 This class is a representation of a render view which provides some common functions to manipulate a viewport. More...
 
class  IRenderView2
 IRenderView2 provide the access to IFixedViewportPipeline with which 3rd party developer can add some extended behavior to the fixed render pipeline. More...
 
class  IShaderManager
 Represents the programmable shader associated with a material or texture map plug-in. More...
 
class  IShaderManagerCreator
 Factory class for IShaderManager objects. More...
 
class  ISimpleMaterial
 ISimpleMaterial provides any material or texture plugin the ability to display itself in the new Viewport Display system in 3ds Max 2012. More...
 
class  ISimpleMaterialExt
 ISimpleMaterialExt extends ISimpleMaterial to support more textures. More...
 
class  ITextureDisplay
 This interface enables material and texture map plugins to display textures in the new viewport display system in 3ds Max 2012. More...
 
class  IVariableDictionary
 IVariableDictionary is a map structure that contains key/variable pairs. More...
 
class  IView
 This class is a representation of a basic view. More...
 
class  IViewportViewSetting
 Viewport Setting For The Nitrous Graphics Viewport. More...
 
class  IVirtualDevice
 This class provides low level access to the GPU device. More...
 
struct  LockedRect
 Defines a rectangular region that has been locked by a call to TextureHandle::LockRect(). More...
 
struct  MaterialRequiredStreamElement
 This struct describes a single stream element that will be used by the hardware shader of a material. More...
 
class  MaterialRequiredStreams
 This class is used for describing the mesh stream requirements of a material. More...
 
class  Matrix44
 
class  MemoryTargetHandle
 Application can use this class to create a render target in memory which can be a target input/output for a fragment node. More...
 
class  MeshElementDescription
 This class describes a single mesh element(which corresponds to a render item) required to be generated by calling Mesh::GenerateRenderItems() or MNMesh::GenerateRenderItems() from the specified mesh(or mnmesh). More...
 
class  Output
 Class that stores output information for a fragment. More...
 
class  PresentableTargetHandle
 This class is similar as TargetHandle. More...
 
struct  Query_Data_SO_Statistics
 
class  QueryHandle
 QueryHandle is a query object used for submitting hardware queries. More...
 
class  RasterizerState
 This class encapsulates a complete rasterizer state, like fill mode, cull mode, point size, etc. More...
 
struct  RectangleSize
 the struct that defines the width and height of one rectangle. More...
 
class  RefPtr
 This template class act similar as CComPtr. More...
 
class  RenderItemHandle
 This is the base wrapper class for all viewport render items. More...
 
class  RenderItemHandleArray
 This is a utility class. More...
 
class  RenderItemHandleDecorator
 This is a decorator class for RenderItemHandle. More...
 
class  RenderNodeHandle
 This class describes a graphics node. More...
 
class  RenderNodeIterator
 RenderNodeIterator is the iterator class to iterate all render nodes in the current render world. More...
 
struct  RenderRegion
 Note: The render region can set the clipping rectangle,offset and scale of render target in the screen space of render view. More...
 
class  RenderWorldHandle
 RenderWorldHandle is the base wrapper class of the nitrous world. More...
 
class  SafeReferenceObjectProxy
 This class is internally used for preventing the AddRef and Release of a pointer returned by RefPtr::operator -> from being called. More...
 
class  SimpleRenderGeometry
 SimpleRenderGeometry is a simple implementation of IRenderGeometry. More...
 
struct  SimpleVertexStream
 Used by DrawPrimitive and DrawIndexedPrimitive for vertex data. More...
 
class  SmartHandle
 This is the base wrapper class for all graphics primitive classes in max viewport: worlds, nodes, render items, materials, etc. More...
 
class  SolidColorMaterialHandle
 SolidColorMaterialHandle is a material class to support solid color. More...
 
class  StandardMaterialHandle
 StandardMaterialHandle is a material class to support phong style material . More...
 
class  StencilOperation
 This class encapsulates a complete set of stencil buffer operations for stencil test. More...
 
class  TargetBlendState
 This class holds the blend state for single render target. More...
 
class  TargetHandle
 Application can use this class either as a render target or convert it to texture and assign to model. More...
 
struct  TextureCoordStream
 This structure is used to define vertex's texture coordinate information. More...
 
class  TextureHandle
 This is texture class to support texture for material, such as TextureMaterialHandle. More...
 
class  TextureHandleUtility
 This is utility class to create TextureHandle from Texmap. More...
 
class  TextureMaterialHandle
 This is material class to support material with texture. More...
 
class  UpdateDisplayContext
 This class contains all information that will be passed to IObjectDisplay::UpdateDisplay and will be used by plugin to update its display data. More...
 
class  UpdateNodeContext
 This class contains node dependent information for calling IObjectDisplay2::UpdatePerNodeItems(), and IObjectDisplay2::UpdatePerViewItems() More...
 
class  UpdateViewContext
 This class contains view dependent information for calling IObjectDisplay2::UpdatePerViewItems() More...
 
class  Variable
 Variable is a simple class that stores certain data that a developer can decide at runtime. More...
 
class  VertexBufferHandle
 VertexBufferHandle is a memory buffer that contain vertex data. More...
 
class  VertexColorMaterialHandle
 VertexColorMaterialHandle is a material class to support vertex color. More...
 
class  ViewFragment
 Base class of all viewport fragment. More...
 
class  ViewParameter
 This class wrap up all viewport related parameters. More...
 

Typedefs

typedef MaxSDK::Array< MSTRTechniqueNames
 
typedef RefPtr< FragmentFragmentPtr
 
typedef RefPtr< FragmentGraphFragmentGraphPtr
 
typedef RefPtr< ICameraCameraPtr
 
typedef RefPtr< IConsolidationKeyIConsolidationKeyPtr
 
typedef RefPtr< IConsolidationRenderItemIConsolidationRenderItemPtr
 
typedef RefPtr< ICustomRenderItemICustomRenderItemPtr
 
typedef RefPtr< IDisplayCallbackIDisplayCallbackPtr
 
typedef RefPtr< IRefObjectRefObjectPtr
 
typedef RefPtr< IRenderGeometryIRenderGeometryPtr
 
typedef MaxSDK::Array< SmartHandleSmartHandleArray
 
typedef MaxSDK::Array< TargetHandleTargetHandleArray
 
typedef unsigned __int64 Identifier
 This is the unique id type of our internal graphics objects. More...
 
typedef unsigned long Bitfields
 record the dirty flags of render view. More...
 
typedef MaxSDK::Array< VertexBufferHandleVertexBufferHandleArray
 
typedef MaxSDK::Graphics::RefPtr< ViewParameterViewParameterPtr
 

Enumerations

enum  FrameType { FrameType_Normal, FrameType_BeginSequence, FrameType_Interactive, FrameType_EndSequence }
 Indicates the type of frame. More...
 
enum  RenderViewDirtyFlag { RenderViewDirtyFlagViewChanged = 0x1, RenderViewDirtyFlagFragmentChanged = 0x2 }
 Indicates the dirty flag of render view. More...
 
enum  FragmentFlags { FragmentFlagsEvaluated = 0x00000001, FragmentFlagsDirty = 0x00000002 }
 This enum contains flags that specify certain states of a fragment or fragment graph node. More...
 
enum  FragmentMessageID { FragmentMessageIDTimer, FragmentMessageIDEndFrame, BuiltInFragmentMessageIDCount = 0xFF }
 This enum describes types of messages a fragment could register and receive from the fragment system. More...
 
enum  VarType {
  VT_Char, VT_UnsignedChar, VT_WideChar, VT_Short,
  VT_UnsignedShort, VT_Int, VT_UnsignedInt, VT_Long,
  VT_UnsignedLong, VT_Int64, VT_UnsignedInt64, VT_Float,
  VT_Double, VT_StringA, VT_StringW, VT_Dictionary,
  VT_IRefObject
}
 built-in variable types. More...
 
enum  VertexFieldType {
  VertexFieldFloat1 = 0, VertexFieldFloat2 = 1, VertexFieldFloat3 = 2, VertexFieldFloat4 = 3,
  VertexFieldColor = 4, VertexFieldByte4 = 5, VertexFieldShort2 = 6, VertexFieldShort4 = 7,
  VertexFieldShortFloat2 = 15, VertexFieldShortFloat4 = 16, VertexFieldInt = 20, VertexFieldInt2 = 21,
  VertexFieldInt3 = 22, VertexFieldInt4 = 23, VertexFieldTypeUnknown, VertexFieldTypeCount
}
 types available for vertex fields, e.g. More...
 
enum  VertexFieldUsage {
  VertexFieldUsagePosition = 0, VertexFieldUsageNormal, VertexFieldUsageTexcoord, VertexFieldUsageTangent,
  VertexFieldUsageBitangent, VertexFieldUsageUnknown, VertexFieldUsageCount
}
 Indicates the usage of a vertex field of a vertex buffer. More...
 
enum  MeshChannelCategory {
  MeshChannelPosition = 0, MeshChannelVertexNormal, MeshChannelTexcoord, MeshChannelTangent,
  MeshChannelBitangent, MeshChannelVertexColor, MeshChannelUnknown, MeshChannelFaceMap,
  MeshChannelCategoryCount
}
 Indicates the data source of a vertex field of a mesh vertex buffer. More...
 
enum  IndexType { IndexTypeUnknown, IndexTypeShort, IndexTypeInt, IndexTypeCount }
 Buffers are composed of arrays of elements all of the same type. More...
 
enum  BufferUsageType {
  BufferUsageStatic = 0, BufferUsageDynamic, BufferUsageStaging, BufferUsageMask = 0xf,
  BufferUsageStreamTexture = 0x10, BufferUsageTarget = 0x20, BufferUsageUnorderedAccess = 0x80, BufferUsageStructure = 0x100,
  BufferUsageRaw = 0x200, BufferUsageBuffer = 0x400
}
 BufferUsageType Types for OGS buffer usage. More...
 
enum  BufferPoolType {
  BufferPoolTypeUnKnown = 0, BufferPoolTypeDiskBuffer = 0x1, BufferPoolTypeSystemBuffer = 0x1 << 1, BufferPoolTypeHardwareBuffer = 0x1 << 2,
  BufferPoolTypeInMemory = BufferPoolTypeSystemBuffer | BufferPoolTypeHardwareBuffer
}
 
enum  VisualStyle {
  VisualStyleRealistic = 0, VisualStyleShaded, VisualStyleFacets, VisualStyleConsistentColor,
  VisualStyleHiddenLine, VisualStyleWireframe, VisualStyleBoundingBox, VisualStyleInk,
  VisualStyleColorInk, VisualStyleAcrylic, VisualStyleTech, VisualStyleGraphite,
  VisualStyleColorPencil, VisualStylePastel, VisualStyleClay, VisualStyleCount
}
 Enum type for all visual styles of nitrous viewport. More...
 
enum  ViewportPreset {
  ViewportPresetQuality, ViewportPresetStandard, ViewportPresetPerformance, ViewportPresetDXMode,
  ViewportPresetCustomize, ViewportPresetCount
}
 Enum type for all presets of nitrous viewport. More...
 
enum  ObjectDisplayRequirement { ObjectDisplayRequireLegacyDisplayMode = 0x00000001, ObjectDisplayRequireUpdatePerViewItems = 0x00000002 }
 This enum contains flags that can be combined together to specify whether or not certain functions of IObjectDisplay2 will be supported. More...
 
enum  MaterialRequirementFlags { MaterialRequirementSplitByMaterialID = 0x00000001 }
 This enum defines requirement flags of material additional to mesh stream requirements of MaterialRequiredStreams. More...
 
enum  MeshElementType {
  MeshElementTypeSolidMesh, MeshElementTypeVertexTicks, MeshElementTypeEdge, MeshElementTypeDiagonal,
  MeshElementTypeFace, MeshElementTypeNormal
}
 This enum describes the type of mesh element to be generated. More...
 
enum  MeshPart { MeshPartSelected, MeshPartUnselected, MeshPartWhole }
 When a mesh is displayed in any sub-object level, this enum help decide which part of the mesh this mesh element belongs to. More...
 
enum  BuiltInMeshElementDescription {
  ElementDescriptionSolidMesh, ElementDescriptionVetexTicks, ElementDescriptionWireframe, ElementDescriptionSelectedEdge,
  ElementDescriptionDiagonal, ElementDescriptionSelectedDiagonal, ElementDescriptionSelectedFace
}
 This enum defines some kinds of built-in mesh element descriptions. More...
 
enum  PrimitiveType {
  PrimitivePointList, PrimitiveLineList, PrimitiveLineStrip, PrimitiveTriangleList,
  PrimitiveTriangleStrip, PrimitiveLineListAdj, PrimitiveLineStripAdj, PrimitiveTriangleListAdj,
  PrimitiveTriangleStripAdj, PrimitivePatchList1, PrimitivePatchList2, PrimitivePatchList3,
  PrimitivePatchList4, PrimitivePatchList5, PrimitivePatchList6, PrimitivePatchList7,
  PrimitivePatchList8, PrimitivePatchList9, PrimitivePatchList10, PrimitivePatchList11,
  PrimitivePatchList12, PrimitivePatchList13, PrimitivePatchList14, PrimitivePatchList15,
  PrimitivePatchList16, PrimitivePatchList17, PrimitivePatchList18, PrimitivePatchList19,
  PrimitivePatchList20, PrimitivePatchList21, PrimitivePatchList22, PrimitivePatchList23,
  PrimitivePatchList24, PrimitivePatchList25, PrimitivePatchList26, PrimitivePatchList27,
  PrimitivePatchList28, PrimitivePatchList29, PrimitivePatchList30, PrimitivePatchList31,
  PrimitivePatchList32, PrimitiveTypeCount
}
 Supported primitive types. More...
 
enum  BufferClearFlag { ClearBackbuffer = 0x1, ClearDepthBuffer = 0x2, ClearStencilBuffer = 0x4, ClearAll = 0x7 }
 This flag describes the way to clear the current buffers. More...
 
enum  BlendSelector {
  BlendSelectorBlendFactor, BlendSelectorBothInvSourceAlpha, BlendSelectorBothSourceAlpha, BlendSelectorDestinationAlpha,
  BlendSelectorDestinationColor, BlendSelectorInvBlendFactor, BlendSelectorInvDestinationAlpha, BlendSelectorInvDestinationColor,
  BlendSelectorInvSourceAlpha, BlendSelectorInvSourceColor, BlendSelectorOne, BlendSelectorSourceAlpha,
  BlendSelectorSourceAlphaSat, BlendSelectorSourceColor, BlendSelectorZero
}
 blend selector. More...
 
enum  CullMode { CullModeCW, CullModeCCW, CullModeNone }
 cull type. More...
 
enum  FillMode { FillSolid, FillWireFrame }
 fill mode for polygons More...
 
enum  CompareFunction {
  CompareFunctionAlways, CompareFunctionEqual, CompareFunctionGreater, CompareFunctionGreaterEqual,
  CompareFunctionLess, CompareFunctionLessEqual, CompareFunctionNever, CompareFunctionNotEqual
}
 compare functions More...
 
enum  ColorWriteEnable {
  ColorWriteEnableNone = 0, ColorWriteEnableAlpha = 0x8, ColorWriteEnableBlue = 0x4, ColorWriteEnableGreen = 0x2,
  ColorWriteEnableRed = 0x1, ColorWriteEnableRedGreenBlue = 0x7, ColorWriteEnableRedGreenBlueAlpha = 0xf, WRITEENABLE_FORCE_DWORD = 0x7fffffff
}
 
enum  BlendOperation {
  BlendOperationAdd, BlendOperationMax, BlendOperationMin, BlendOperationSubtract,
  BlendOperationReverseSubtract
}
 blend operations More...
 
enum  StencilOperationType {
  StencilOperationTypeDecrement = 8, StencilOperationTypeDecrementSaturation = 5, StencilOperationTypeIncrement = 7, StencilOperationTypeIncrementSaturation = 4,
  StencilOperationTypeInvert = 6, StencilOperationTypeKeep = 1, StencilOperationTypeReplace = 3, StencilOperationTypeZeroStencil = 2,
  STENCILOP_FORCE_DWORD = 0x7fffffff
}
 Stencil buffer operation. More...
 
enum  AccessType {
  AccessTypeNone = 0x0, ReadAcess = 0x1, WriteAcess = 0x2, ReadWriteAcess = ReadAcess | WriteAcess,
  WriteDiscardAcess
}
 AccessType Types for accessing buffers. More...
 
enum  TargetFormat {
  TargetFormatUnkown, TargetFormatD24S8, TargetFormatD24X8, TargetFormatD32,
  TargetFormatDxt1, TargetFormatDxt2, TargetFormatDxt3, TargetFormatDxt4,
  TargetFormatDxt5, TargetFormatA8, TargetFormatR8, TargetFormatR16,
  TargetFormatR16F, TargetFormatA1R5G5B5, TargetFormatR5G6B5, TargetFormatR32F,
  TargetFormatR16G16, TargetFormatR16G16F, TargetFormatA8R8G8B8, TargetFormatA8B8G8R8,
  TargetFormatX8B8G8R8, TargetFormatA2B10G10R10, TargetFormatR32G32F, TargetFormatA16B16G16R16,
  TargetFormatA16B16G16R16F, TargetFormatA32B32G32R32F, TargetFormatX8R8G8B8, TargetFormatR32G32B32F,
  TargetFormatR32UINT, TargetFormatR32SINT, TargetFormatCount
}
 TargetFormat indicates which type the target/texture is. More...
 
enum  GraphicFeatureLevel {
  Level_Unknown = 0, Level_NULL = 5, Level2_0 = 20, Level2_1 = 21,
  Level3_0 = 30, Level3_1 = 31, Level4_0 = 40, Level4_1 = 41,
  Level4_5 = 45, Level5_0 = 50, Level_Count = 9
}
 This enum specifies the feature levels device supported. More...
 
enum  TextureType {
  TextureTypeUnknown = 0, TextureTypeImage1D = 1, TextureTypeImage1DArray = 2, TextureTypeImage2D = 3,
  TextureTypeImage2DArray = 4, TextureTypeCubeMap = 5, TextureTypeVolume = 6, TextureTypeCount
}
 Texture type enums. More...
 
enum  ResourceUsage {
  ResourceUsageNormal = 0, ResourceUsageDynamic = 1, ResourceUsageStaging = 2, ResourceUsageMask = 0xf,
  ResourceUsageStream = 0x10, ResourceUsageTarget = 0x20
}
 Resource usage, used for texture. More...
 
enum  QueryType {
  QueryType_Event = 8, QueryType_Occlusion = 9, QueryType_TimeStamp = 10, QueryType_Occlusion_Test = 20,
  QueryType_SO_Overflow_Test = 21, QueryType_SO_Stats = 22
}
 Enums for QueryHandle, indicates which query types to issue. More...
 
enum  ZBiasPresets { ZBiasPresets_Default = -1, ZBiasPresets_Shaded = 0, ZBiasPresets_Wireframe = 1, ZBiasPresets_Gizmo = 2 }
 
enum  RenderItemVisibilityGroup { RenderItemVisible_Unknown, RenderItemVisible_Shaded, RenderItemVisible_Wireframe, RenderItemVisible_Gizmo }
 This enum defines in what group a render item is visible. More...
 
enum  ObjectComponentRequirement {
  ObjectComponentSolidMesh = 0x00000001, ObjectComponentWireframe = 0x00000002, ObjectComponentVertexTicks = 0x00000004, ObjectComponentDiagonal = 0x00000008,
  ObjectComponentSelected = 0x00000010, ObjectComponentUnselected = 0x00000020, ObjectComponentBackfaceCull = 0x00000040, ObjectComponentVertexColorSoftSelection = 0x00000080
}
 This enum contains flags that can be combined together to specify which part is required by the node when updating render items. More...
 

Functions

FragmentGraphAPI bool IsNumberType (VarType type)
 Checks if the given type is number type. More...
 
FragmentGraphAPI bool IsCompatibleType (VarType lhs, VarType rhs)
 Checks if two types can be converted to each other. More...
 
DataBridgeAPI size_t GetVertexStride (const VertexFieldType type)
 Get the vertex stride by a given vertex type, in bytes. More...
 
DataBridgeAPI size_t GetIndexStride (const IndexType type)
 Get the index stride by a given index type, in bytes. More...
 
GraphicsDriverAPI size_t CombineHashCode (size_t seed, size_t hashCode)
 A utility function for generating hash code. More...
 
UtilExport MaxSDK::Graphics::IDisplayManagerGetIDisplayManager ()
 Helper function to access the IDisplayManager core interface. More...
 
bool IsRetainedModeEnabled ()
 Helper function to test whether the new viewport graphics system is running. More...
 
bool IsHardwareHitTesting (ViewExp *vpt)
 Helper function to test whether the new viewport graphics system is performing hardware hit testing. More...
 
template<class RefObjectType , class SafeRefObjectType , class LifeTimePolicy >
bool operator== (void *pPtr, const RefPtr< RefObjectType, SafeRefObjectType, LifeTimePolicy > &pInterface)
 
template<class RefObjectType , class SafeRefObjectType , class LifeTimePolicy >
bool operator!= (void *pPtr, const RefPtr< RefObjectType, SafeRefObjectType, LifeTimePolicy > &pInterface)
 
GraphicsDriverAPI void MaxWorldMatrixToMatrix44 (Matrix44 &outMatrix, const Matrix3 &inMatrix)
 Convert Matrix3 to Matrix44. More...
 
GraphicsDriverAPI void Matrix44ToMaxWorldMatrix (Matrix3 &outMatrix, const Matrix44 &inMatrix)
 Convert Matrix44 to Matrix3. More...
 
GraphicsDriverAPI const MeshElementDescriptionGetBuiltInMeshElementDescription (BuiltInMeshElementDescription type)
 Get a specified built-in mesh element description. More...
 
GraphicsDriverAPI DWORD GetDeviceCompatibleARGBColor (DWORD color)
 Use this function for TargetFormatA8R8G8B8 only. More...
 
GraphicsDriverAPI size_t GetTargetFormatPixelSize (TargetFormat format)
 Get the number of bytes for each pixel by a given target format. More...
 
GraphicsDriverAPI VertexBufferHandle GenerateInstanceData (Matrix3 *worldTransforms, size_t count)
 Generate the instance data from a Matrix3 array. More...
 
GraphicsDriverAPI VertexBufferHandle GenerateInstanceData (Point3 *UVs, Matrix3 *worldTransforms, size_t count)
 Generate the instance data from a texture coordinates array and a Matrix3 array. More...
 
GraphicsDriverAPI bool GenerateInstanceRenderItem (RenderItemHandle &hInstanceRenderItem, const RenderItemHandle &hTupleMeshHandle, const VertexBufferHandle &hInstanceData)
 Generate the instance render item from a tuple mesh and a Matrix3 array. More...
 

Variables

FragmentGraphAPI Class_ID TYPE_ID_Char
 Built-in char input/output type. More...
 
FragmentGraphAPI Class_ID TYPE_ID_UnsignedChar
 Built-in unsigned char input/output type. More...
 
FragmentGraphAPI Class_ID TYPE_ID_WideChar
 Built-in wchar_t input/output type. More...
 
FragmentGraphAPI Class_ID TYPE_ID_Short
 Built-in short input/output type. More...
 
FragmentGraphAPI Class_ID TYPE_ID_UnsignedShort
 Built-in unsigned short input/output type. More...
 
FragmentGraphAPI Class_ID TYPE_ID_Int
 Built-in int input/output type. More...
 
FragmentGraphAPI Class_ID TYPE_ID_UnsignedInt
 Built-in unsigned int input/output type. More...
 
FragmentGraphAPI Class_ID TYPE_ID_Long
 Built-in long input/output type. More...
 
FragmentGraphAPI Class_ID TYPE_ID_UnsignedLong
 Built-in unsigned long input/output type. More...
 
FragmentGraphAPI Class_ID TYPE_ID_Int64
 Built-in __int64 input/output type. More...
 
FragmentGraphAPI Class_ID TYPE_ID_UnsignedInt64
 Built-in unsigned __int64 input/output type. More...
 
FragmentGraphAPI Class_ID TYPE_ID_Float
 Built-in float input/output type. More...
 
FragmentGraphAPI Class_ID TYPE_ID_Double
 Built-in double input/output type. More...
 
FragmentGraphAPI Class_ID TYPE_ID_StringA
 Built-in multi-byte string input/output type. More...
 
FragmentGraphAPI Class_ID TYPE_ID_StringW
 Built-in Unicode string input/output type. More...
 
FragmentGraphAPI Class_ID TYPE_ID_Dictionary
 Built-in dictionary input/output type. More...
 
const size_t TIMER_NONE = (size_t)-1
 Use this value to unregister a timer with a fragment. More...
 
GraphicsDriverAPI IndexBufferHandle EmptyIndexBufferHandle
 
GraphicsDriverAPI MaxSDK::Array< SmartHandleEmptySmartHandleArray
 
GraphicsDriverAPI TargetHandle EmptyTargetHandle
 
const Identifier NIL_ID = (Identifier)-1
 Invalid id value. More...
 
GraphicsDriverAPI VertexBufferHandle EmptyVertexBufferHandle
 
GraphicsDriverAPI MaxSDK::Array< VertexBufferHandleEmptyVertexBufferHandleArray
 

Typedef Documentation

typedef unsigned __int64 Identifier

This is the unique id type of our internal graphics objects.

typedef unsigned long Bitfields

record the dirty flags of render view.

See the enumeration RenderViewDirtyFlag.

Enumeration Type Documentation

enum FrameType

Indicates the type of frame.

Enumerator
FrameType_Normal 

Same as REDRAW_NORMAL i.e., we will perform a complete redraw.

FrameType_BeginSequence 

Same as REDRAW_BEGIN which indicates the beginning of a continuous render sequence(for e.g., start dragging the view cube).

FrameType_Interactive 

Same as REDRAW_INTERACTIVE which indicates the continuous state of a render sequence(for e.g., while we are dragging the view cube).

FrameType_EndSequence 

Same as REDRAW_END which indicates the end of a render sequence (for e.g.,when we stop dragging the view cube).

16 {
32 };
Same as REDRAW_BEGIN which indicates the beginning of a continuous render sequence(for e...
Definition: Enums.h:23
Same as REDRAW_NORMAL i.e., we will perform a complete redraw.
Definition: Enums.h:19
Same as REDRAW_END which indicates the end of a render sequence (for e.g.,when we stop dragging the v...
Definition: Enums.h:31
Same as REDRAW_INTERACTIVE which indicates the continuous state of a render sequence(for e...
Definition: Enums.h:27

Indicates the dirty flag of render view.

Enumerator
RenderViewDirtyFlagViewChanged 

View elements such as width,height or position are changed.

RenderViewDirtyFlagFragmentChanged 

Fragment elements such as input,out or connection are changed.

37 {
41 
45 };
View elements such as width,height or position are changed.
Definition: Enums.h:40
Fragment elements such as input,out or connection are changed.
Definition: Enums.h:44

This enum contains flags that specify certain states of a fragment or fragment graph node.

Enumerator
FragmentFlagsEvaluated 

Indicates whether this fragment has already been evaluated during a recursive call to FragmentGraph::Evaluate().

If this flag is true, we simply ignore evaluating this fragment an additional time.

FragmentFlagsDirty 

Indicates whether this fragment is dirty and needs to be evaluated once more.

Note this flag is mainly used to indicate if a viewport redraw is required.

29  {
34  FragmentFlagsEvaluated = 0x00000001,
39  FragmentFlagsDirty = 0x00000002,
40  };
Indicates whether this fragment is dirty and needs to be evaluated once more.
Definition: Fragment.h:39
Indicates whether this fragment has already been evaluated during a recursive call to FragmentGraph::...
Definition: Fragment.h:34

This enum describes types of messages a fragment could register and receive from the fragment system.

Fragment::OnMessage is invoked whenever a fragment receives the registered messages from the fragment system.

Enumerator
FragmentMessageIDTimer 

The timer message.

A fragment may call Fragment::SetTimerTicks to register a timer. When the timer ticks, Fragment::OnMessage is invoked.

FragmentMessageIDEndFrame 

The end frame message.

A fragment will receive this message at the end of each frame.

BuiltInFragmentMessageIDCount 

Preserved count of built-in message.

47  {
59  };
The end frame message.
Definition: Fragment.h:55
The timer message.
Definition: Fragment.h:51
Preserved count of built-in message.
Definition: Fragment.h:58
enum VarType

built-in variable types.

For more details please see class Variable.

Enumerator
VT_Char 

A single char type.

VT_UnsignedChar 

unsigned char type.

VT_WideChar 

wchar_t type.

VT_Short 

short type.

VT_UnsignedShort 

unsigned short type.

VT_Int 

int type.

VT_UnsignedInt 

unsigned int type.

VT_Long 

long type.

VT_UnsignedLong 

unsigned long type.

VT_Int64 

__int64 type.

VT_UnsignedInt64 

unsigned __int64 type.

VT_Float 

float type.

VT_Double 

double type.

VT_StringA 

Ascii string type.

VT_StringW 

Unicode string type.

VT_Dictionary 

dictionary type.

If a variable is this type, it is actually a map. The key is a multi-byte string, while the value is another variable.

VT_IRefObject 

A IRefObject type.

The variable will hold a reference of that object.

21  {
24  VT_Char,
30  VT_WideChar,
33  VT_Short,
39  VT_Int,
45  VT_Long,
51  VT_Int64,
57  VT_Float,
60  VT_Double,
63  VT_StringA,
66  VT_StringW,
74  };
unsigned long type.
Definition: Variable.h:48
Unicode string type.
Definition: Variable.h:66
short type.
Definition: Variable.h:33
long type.
Definition: Variable.h:45
int type.
Definition: Variable.h:39
unsigned int type.
Definition: Variable.h:42
float type.
Definition: Variable.h:57
dictionary type.
Definition: Variable.h:70
A single char type.
Definition: Variable.h:24
Ascii string type.
Definition: Variable.h:63
__int64 type.
Definition: Variable.h:51
unsigned short type.
Definition: Variable.h:36
A IRefObject type.
Definition: Variable.h:73
unsigned __int64 type.
Definition: Variable.h:54
wchar_t type.
Definition: Variable.h:30
double type.
Definition: Variable.h:60
unsigned char type.
Definition: Variable.h:27

types available for vertex fields, e.g.

Float4

Enumerator
VertexFieldFloat1 

single float field see DXGI_FORMAT_R32_FLOAT

VertexFieldFloat2 

double float field.

x,y see DXGI_FORMAT_R32G32_FLOAT

VertexFieldFloat3 

triple float field see DXGI_FORMAT_R32G32B32_FLOAT

VertexFieldFloat4 

quad float field see DXGI_FORMAT_R32G32B32A32_FLOAT

VertexFieldColor 

color field see DXGI_FORMAT_R8G8B8A8_UNORM

VertexFieldByte4 

unsigned byte 4 field see DXGI_FORMAT_R8G8B8A8_UINT

VertexFieldShort2 

short 2 field see DXGI_FORMAT_R16G16_SINT

VertexFieldShort4 

short 4 field see DXGI_FORMAT_R16G16B16A16_SINT

VertexFieldShortFloat2 

FP16 x 2 type see DXGI_FORMAT_R16G16_FLOAT.

VertexFieldShortFloat4 

FP16 x 4 type see DXGI_FORMAT_R16G16B16A16_FLOAT.

VertexFieldInt 

int field see DXGI_FORMAT_R32_SINT

VertexFieldInt2 

int2 field see DXGI_FORMAT_R32G32_SINT

VertexFieldInt3 

int3 field see DXGI_FORMAT_R32G32B32_SINT

VertexFieldInt4 

int4 field see DXGI_FORMAT_R32G32B32A32_SINT

VertexFieldTypeUnknown 

unknown field

VertexFieldTypeCount 
20  {
24  VertexFieldFloat1 = 0,
25 
29  VertexFieldFloat2 = 1,
30 
34  VertexFieldFloat3 = 2,
35 
39  VertexFieldFloat4 = 3,
40 
44  VertexFieldColor = 4,
45 
49  VertexFieldByte4 = 5,
50 
54  VertexFieldShort2 = 6,
55 
59  VertexFieldShort4 = 7,
64 
69 
73  VertexFieldInt = 20,
77  VertexFieldInt2 = 21,
81  VertexFieldInt3 = 22,
85  VertexFieldInt4 = 23,
86 
90 
92  };
short 4 field see DXGI_FORMAT_R16G16B16A16_SINT
Definition: GeometryEnums.h:59
FP16 x 4 type see DXGI_FORMAT_R16G16B16A16_FLOAT.
Definition: GeometryEnums.h:68
int3 field see DXGI_FORMAT_R32G32B32_SINT
Definition: GeometryEnums.h:81
short 2 field see DXGI_FORMAT_R16G16_SINT
Definition: GeometryEnums.h:54
color field see DXGI_FORMAT_R8G8B8A8_UNORM
Definition: GeometryEnums.h:44
int2 field see DXGI_FORMAT_R32G32_SINT
Definition: GeometryEnums.h:77
int4 field see DXGI_FORMAT_R32G32B32A32_SINT
Definition: GeometryEnums.h:85
unsigned byte 4 field see DXGI_FORMAT_R8G8B8A8_UINT
Definition: GeometryEnums.h:49
triple float field see DXGI_FORMAT_R32G32B32_FLOAT
Definition: GeometryEnums.h:34
double float field.
Definition: GeometryEnums.h:29
int field see DXGI_FORMAT_R32_SINT
Definition: GeometryEnums.h:73
quad float field see DXGI_FORMAT_R32G32B32A32_FLOAT
Definition: GeometryEnums.h:39
Definition: GeometryEnums.h:91
single float field see DXGI_FORMAT_R32_FLOAT
Definition: GeometryEnums.h:24
unknown field
Definition: GeometryEnums.h:89
FP16 x 2 type see DXGI_FORMAT_R16G16_FLOAT.
Definition: GeometryEnums.h:63

Indicates the usage of a vertex field of a vertex buffer.

This enum is used to make hardware shaders understand the usage of vertex buffer.

Enumerator
VertexFieldUsagePosition 

Position.

VertexFieldUsageNormal 

Normal.

VertexFieldUsageTexcoord 

Texture coordinate.

VertexFieldUsageTangent 

tangent

VertexFieldUsageBitangent 

bitangent

VertexFieldUsageUnknown 

Unknown usage.

VertexFieldUsageCount 
98  {
102 
106 
110 
114 
118 
122 
124  };
Unknown usage.
Definition: GeometryEnums.h:121
tangent
Definition: GeometryEnums.h:113
bitangent
Definition: GeometryEnums.h:117
Normal.
Definition: GeometryEnums.h:105
Definition: GeometryEnums.h:123
Position.
Definition: GeometryEnums.h:101
Texture coordinate.
Definition: GeometryEnums.h:109

Indicates the data source of a vertex field of a mesh vertex buffer.

e.g. Position, Normal, Texture, etc.

Enumerator
MeshChannelPosition 

position

MeshChannelVertexNormal 

vertex normal components

MeshChannelTexcoord 

texture coordinate components

MeshChannelTangent 

tangent components

MeshChannelBitangent 

bitangent components

MeshChannelVertexColor 

vertex color components

MeshChannelUnknown 

Unknown data source.

MeshChannelFaceMap 

face map components

MeshChannelCategoryCount 
130  {
133  MeshChannelPosition = 0,
134 
138 
145 
149 
153 
157 
161 
163  };
tangent components
Definition: GeometryEnums.h:144
bitangent components
Definition: GeometryEnums.h:148
texture coordinate components
Definition: GeometryEnums.h:141
Definition: GeometryEnums.h:162
position
Definition: GeometryEnums.h:133
Unknown data source.
Definition: GeometryEnums.h:156
vertex color components
Definition: GeometryEnums.h:152
face map components
Definition: GeometryEnums.h:160
vertex normal components
Definition: GeometryEnums.h:137
enum IndexType

Buffers are composed of arrays of elements all of the same type.

This enum describes the size and interpretation of the elements in the buffer. Index buffers can have ushort or uint elements.

Enumerator
IndexTypeUnknown 

not defined

IndexTypeShort 

unsigned 16 bit short integer, used for index buffers.

IndexTypeInt 

unsigned 32 bit integer, used for index buffers.

IndexTypeCount 
170  {
174 
178 
181  IndexTypeInt,
182 
184  };
Definition: GeometryEnums.h:183
unsigned 16 bit short integer, used for index buffers.
Definition: GeometryEnums.h:177
unsigned 32 bit integer, used for index buffers.
Definition: GeometryEnums.h:181
not defined
Definition: GeometryEnums.h:173

BufferUsageType Types for OGS buffer usage.

Enumerator
BufferUsageStatic 

static usage type.

Data stores in GPU memory.

BufferUsageDynamic 

Dynamic buffer.

If the resource contents are to be changed often, EDynamicUsage is recommended to achieve fast update. Used with the correct map flag( WriteDiscard or WriteNoOverwrite), maximum performance to change the contents will be achieved. Meaning of WriteNoOverwrite: WriteNoOverwrite signifies that the application promises not to write to data that the GPU is using. In exchange, the GPU allows the application to write to other parts of the same buffer. The application must ensure that it does not write over any data in use by the GPU. Common Usage of WriteDiscard with WriteNoOverwrite as map flags: WriteDiscard and WriteNoOverwrite are normally used in conjunction with dynamic index/vertex buffers, although they can also be used with dynamic textures. A common use of these two flags involves filling dynamic index/vertex buffers with geometry that can be seen from the camera's current position. The first time that data is entered into the buffer on a given frame, Map is called with WriteDiscard; doing so invalidates the previous contents of the buffer. The buffer is then filled with all available data. Subsequent writes to the buffer within the same frame should use WriteNoOverwrite. This will enable the CPU to access a resource that is potentially being used by the GPU as long as the restrictions described previously are respected.

BufferUsageStaging 
BufferUsageMask 
BufferUsageStreamTexture 

Usage for stream output for vb & ibs, may be used as a texture.

BufferUsageTarget 

Usage for render target, it means the resouce created from video memory and can be used as render-target for vb & ibs & textures, may be used as a render target/stream output buffer.

BufferUsageUnorderedAccess 

Usage for unordered access of the resource.

This allows the resource to be both read and written by a shader, through the use of atomic functions. Check the device capabilities to determine support.

BufferUsageStructure 

Usage for structured buffer.

If this flag is specified, the buffer must use BufferPoolTypeHardwareBuffer for pool type

BufferUsageRaw 

Usage for bytes address buffer.

BufferUsageBuffer 

Usage for standard buffer type If this flag is specified, user must specify dataType parameter of VertexBufferHandle::Initialize()

201  {
204  BufferUsageStatic = 0,
205 
224 
225  /* Staging usage, means it's a system memory resource
226  */
228 
229  /*for anding off the high bits
230  */
231  BufferUsageMask = 0xf,
232 
237 
242  BufferUsageTarget = 0x20,
243 
249 
253  BufferUsageStructure = 0x100,
254 
257  BufferUsageRaw = 0x200,
258 
262  BufferUsageBuffer = 0x400
263  };
Usage for bytes address buffer.
Definition: GeometryEnums.h:257
Dynamic buffer.
Definition: GeometryEnums.h:223
Usage for standard buffer type If this flag is specified, user must specify dataType parameter of Ver...
Definition: GeometryEnums.h:262
Usage for structured buffer.
Definition: GeometryEnums.h:253
Usage for render target, it means the resouce created from video memory and can be used as render-tar...
Definition: GeometryEnums.h:242
Definition: GeometryEnums.h:231
Usage for stream output for vb & ibs, may be used as a texture.
Definition: GeometryEnums.h:236
Usage for unordered access of the resource.
Definition: GeometryEnums.h:248
Definition: GeometryEnums.h:227
static usage type.
Definition: GeometryEnums.h:204
Enumerator
BufferPoolTypeUnKnown 

Buffer state unknown.

BufferPoolTypeDiskBuffer 

Buffer on disk.

BufferPoolTypeSystemBuffer 

Buffer in system memory.

BufferPoolTypeHardwareBuffer 

Buffer on GPU memory.

BufferPoolTypeInMemory 

Buffer in memory mask, both system and GPU memory.

266  {
270 
274 
277  BufferPoolTypeSystemBuffer = 0x1 << 1 ,
278 
281  BufferPoolTypeHardwareBuffer = 0x1 << 2,
282 
286  };
Buffer in memory mask, both system and GPU memory.
Definition: GeometryEnums.h:285
Buffer state unknown.
Definition: GeometryEnums.h:269
Buffer on GPU memory.
Definition: GeometryEnums.h:281
Buffer in system memory.
Definition: GeometryEnums.h:277
Buffer on disk.
Definition: GeometryEnums.h:273

Enum type for all visual styles of nitrous viewport.

Enumerator
VisualStyleRealistic 

The realistic visual style.

VisualStyleShaded 

The shaded visual style.

VisualStyleFacets 

The facet visual style.

VisualStyleConsistentColor 

The consistent color visual style.

VisualStyleHiddenLine 

The hidden line visual style.

VisualStyleWireframe 

The wireframe visual style.

VisualStyleBoundingBox 

The bounding box visual style.

VisualStyleInk 

The ink visual style for NPR.

VisualStyleColorInk 

The color ink visual style of NPR.

VisualStyleAcrylic 

The acrylic stylized visual style.

VisualStyleTech 

The tech stylized visual style.

VisualStyleGraphite 

The graphite stylized visual style.

VisualStyleColorPencil 

The color pencil stylized visual style.

VisualStylePastel 

The pastel stylized visual style.

VisualStyleClay 

The clay visual style.

VisualStyleCount 

The count of all visual styles.

17  {
66  };
The acrylic stylized visual style.
Definition: GraphicsEnums.h:47
The graphite stylized visual style.
Definition: GraphicsEnums.h:53
The color ink visual style of NPR.
Definition: GraphicsEnums.h:44
The wireframe visual style.
Definition: GraphicsEnums.h:35
The shaded visual style.
Definition: GraphicsEnums.h:23
The bounding box visual style.
Definition: GraphicsEnums.h:38
The consistent color visual style.
Definition: GraphicsEnums.h:29
The pastel stylized visual style.
Definition: GraphicsEnums.h:59
The color pencil stylized visual style.
Definition: GraphicsEnums.h:56
The clay visual style.
Definition: GraphicsEnums.h:62
The hidden line visual style.
Definition: GraphicsEnums.h:32
The realistic visual style.
Definition: GraphicsEnums.h:20
The tech stylized visual style.
Definition: GraphicsEnums.h:50
The ink visual style for NPR.
Definition: GraphicsEnums.h:41
The facet visual style.
Definition: GraphicsEnums.h:26
The count of all visual styles.
Definition: GraphicsEnums.h:65

Enum type for all presets of nitrous viewport.

Enumerator
ViewportPresetQuality 

The quality preset.

ViewportPresetStandard 

The standard preset.

ViewportPresetPerformance 

The performance preset.

ViewportPresetDXMode 

The DX mode preset.

ViewportPresetCustomize 

The user customize preset.

ViewportPresetCount 

The count of all presets.

70  {
89  };
The quality preset.
Definition: GraphicsEnums.h:73
The user customize preset.
Definition: GraphicsEnums.h:85
The DX mode preset.
Definition: GraphicsEnums.h:82
The count of all presets.
Definition: GraphicsEnums.h:88
The standard preset.
Definition: GraphicsEnums.h:76
The performance preset.
Definition: GraphicsEnums.h:79

This enum contains flags that can be combined together to specify whether or not certain functions of IObjectDisplay2 will be supported.

Enumerator
ObjectDisplayRequireLegacyDisplayMode 

Check if this plugin contains legacy display code and want legacy code to be called as well.

Signal this bit if contains legacy display code. Default value for this bit is false.

ObjectDisplayRequireUpdatePerViewItems 

Trying to update items on per view basis is very time consuming.

So only signal this bit if there are actual per view-dependent render items to update. Otherwise call to UpdatePerViewItems will be ignored. Default value for this bit is false.

32 {
44 };
Trying to update items on per view basis is very time consuming.
Definition: IObjectDisplay2.h:43
Check if this plugin contains legacy display code and want legacy code to be called as well...
Definition: IObjectDisplay2.h:37

This enum defines requirement flags of material additional to mesh stream requirements of MaterialRequiredStreams.

Enumerator
MaterialRequirementSplitByMaterialID 

Plug-in needs to split mesh to sub meshes according to face material id.

This flag is on when the material is multi/sub material.

138 {
143 };
Plug-in needs to split mesh to sub meshes according to face material id.
Definition: MaterialRequiredStreams.h:142

This enum describes the type of mesh element to be generated.

Each mesh element corresponds to a specific render item generated by calling Mesh::GenerateRenderItems() or MNMesh::GenerateRenderItems().

Enumerator
MeshElementTypeSolidMesh 

Solid Mesh, it could be: vertex color mesh or general mesh.

This will be displayed in any viewport that requires smooth mesh.

MeshElementTypeVertexTicks 

Vertex ticks.

This will be displayed when the node has "Vertex Ticks" display option on or the vertex tick sub-object be selected.

MeshElementTypeEdge 

Edge mesh, this layer includes the edges.

This will be displayed in viewport that has "wireframe" or "hidden line" on or when the edge sub-object level is selected.

MeshElementTypeDiagonal 

Diagonal Mesh.

This is the dotted edge lines when user turn off "edges only" display property of a node and enable the wireframe mode of viewport.

MeshElementTypeFace 

Face Mesh.

This is the face render item of the mesh when this mesh is displayed in face sub-object level.

MeshElementTypeNormal 

Mesh normals.

This mesh element is required when we need to show all normals of selected face.

22 {
48 };
Mesh normals.
Definition: MeshElementDescription.h:47
Diagonal Mesh.
Definition: MeshElementDescription.h:39
Vertex ticks.
Definition: MeshElementDescription.h:30
Face Mesh.
Definition: MeshElementDescription.h:43
Edge mesh, this layer includes the edges.
Definition: MeshElementDescription.h:35
Solid Mesh, it could be: vertex color mesh or general mesh.
Definition: MeshElementDescription.h:26
enum MeshPart

When a mesh is displayed in any sub-object level, this enum help decide which part of the mesh this mesh element belongs to.

Enumerator
MeshPartSelected 

Selected part.

Only the selected part of the mesh will be displayed.

Remarks
For an edge/diagonal/face mesh element, this value indicates that the mesh element only includes the selected edges/diagonals/faces of the mesh. For a vertex ticks mesh element, it will include the whole of the mesh. But selected vertices will be displayed in red(indicating they're selected).
MeshPartUnselected 

Unselected part.

Only the unselected part of the mesh will be displayed.

Remarks
For an edge/diagonal/face mesh element, this value indicates that the render item only include the unselected edges/diagonals/faces of the mesh. For a vertex ticks mesh element, it will include the whole of the mesh. But selected vertices won't be displayed in red.
MeshPartWhole 

Whole part.

This value indicates an render item includes the whole of the mesh.

54 {
72 };
Unselected part.
Definition: MeshElementDescription.h:68
Whole part.
Definition: MeshElementDescription.h:71
Selected part.
Definition: MeshElementDescription.h:61

This enum defines some kinds of built-in mesh element descriptions.

Developer may query a built-in mesh element description by calling MeshElementDescription::GetBuiltInMeshElementDescription() using any enum value below.

Enumerator
ElementDescriptionSolidMesh 

The mesh element description of a solid mesh.

MeshElementType : MeshElementTypeSolidMesh MeshPart : MeshPartWhole UseSoftSelectionColor : false BackfaceCull : false

ElementDescriptionVetexTicks 

The mesh element description of vertex ticks.

MeshElementType : MeshElementTypeVertexTicks MeshPart : MeshPartWhole UseSoftSelectionColor : false BackfaceCull : false

ElementDescriptionWireframe 

The mesh element description of a wireframe mesh.

MeshElementType : MeshElementTypeEdge MeshPart : MeshPartWhole UseSoftSelectionColor : false BackfaceCull : false

ElementDescriptionSelectedEdge 

The mesh element description of selected edges.

MeshElementType : MeshElementTypeEdge MeshPart : MeshPartSelected UseSoftSelectionColor : false BackfaceCull : false

ElementDescriptionDiagonal 

The mesh element description of diagonals.

MeshElementType : MeshElementTypeDiagonal MeshPart : MeshPartWhole UseSoftSelectionColor : false BackfaceCull : false

ElementDescriptionSelectedDiagonal 

The mesh element description of selected diagonals.

MeshElementType : MeshElementTypeDiagonal MeshPart : MeshPartSelected UseSoftSelectionColor : false BackfaceCull : false

ElementDescriptionSelectedFace 

The mesh element description of selected faces.

MeshElementType : MeshElementTypeFace MeshPart : MeshPartSelected UseSoftSelectionColor : false BackfaceCull : false

151 {
159 
167 
175 
183 
191 
199 
207 };
The mesh element description of a wireframe mesh.
Definition: MeshElementDescription.h:174
The mesh element description of selected edges.
Definition: MeshElementDescription.h:182
The mesh element description of selected diagonals.
Definition: MeshElementDescription.h:198
The mesh element description of vertex ticks.
Definition: MeshElementDescription.h:166
The mesh element description of selected faces.
Definition: MeshElementDescription.h:206
The mesh element description of diagonals.
Definition: MeshElementDescription.h:190
The mesh element description of a solid mesh.
Definition: MeshElementDescription.h:158

Supported primitive types.

Enumerator
PrimitivePointList 

A list of independent points.

PrimitiveLineList 

A list of unconnected two-point line segments, such that the number of lines is the the total number of points divided by two.

PrimitiveLineStrip 

A polyline, where each point is connected to the previous vertex, yielding a single polyline with (vertex_count - 1) two-point line segments.

PrimitiveTriangleList 

A list of unconnected triangles, yielding (vertex_count / 3) triangles.

PrimitiveTriangleStrip 

A strip of connected triangles, such that each vertex after the first three vertices defines a new triangle, yielding (vertex_count - 1) connected triangles.

Remarks
Strips of even a small number of triangles provides better performance and reduced memory consumption relative to the same geometry represented with a triangle list. There is substantial research and software devoted to generating optimal triangle strips. See http://en.wikipedia.org/wiki/Triangle_strip for details.
PrimitiveLineListAdj 

A line list with adjacency information.

PrimitiveLineStripAdj 

A line strip with adjacency information.

PrimitiveTriangleListAdj 

A triangle list with adjacency information.

PrimitiveTriangleStripAdj 

A triangle strip with adjacency information.

PrimitivePatchList1 

A patch list with 1 control point.

PrimitivePatchList2 

A patch list with 2 control point.

PrimitivePatchList3 

A patch list with 3 control point.

PrimitivePatchList4 

A patch list with 4 control point.

PrimitivePatchList5 

A patch list with 5 control point.

PrimitivePatchList6 

A patch list with 6 control point.

PrimitivePatchList7 

A patch list with 7 control point.

PrimitivePatchList8 

A patch list with 8 control point.

PrimitivePatchList9 

A patch list with 9 control point.

PrimitivePatchList10 

A patch list with 10 control point.

PrimitivePatchList11 

A patch list with 11 control point.

PrimitivePatchList12 

A patch list with 12 control point.

PrimitivePatchList13 

A patch list with 13 control point.

PrimitivePatchList14 

A patch list with 14 control point.

PrimitivePatchList15 

A patch list with 15 control point.

PrimitivePatchList16 

A patch list with 16 control point.

PrimitivePatchList17 

A patch list with 17 control point.

PrimitivePatchList18 

A patch list with 18 control point.

PrimitivePatchList19 

A patch list with 19 control point.

PrimitivePatchList20 

A patch list with 20 control point.

PrimitivePatchList21 

A patch list with 21 control point.

PrimitivePatchList22 

A patch list with 22 control point.

PrimitivePatchList23 

A patch list with 23 control point.

PrimitivePatchList24 

A patch list with 24 control point.

PrimitivePatchList25 

A patch list with 25 control point.

PrimitivePatchList26 

A patch list with 26 control point.

PrimitivePatchList27 

A patch list with 27 control point.

PrimitivePatchList28 

A patch list with 28 control point.

PrimitivePatchList29 

A patch list with 29 control point.

PrimitivePatchList30 

A patch list with 30 control point.

PrimitivePatchList31 

A patch list with 31 control point.

PrimitivePatchList32 

A patch list with 32 control point.

PrimitiveTypeCount 
24  {
28 
33 
38 
42 
53 
57 
61 
65 
69 
73 
77 
81 
85 
89 
93 
97 
101 
105 
109 
113 
117 
121 
125 
129 
133 
137 
141 
145 
149 
153 
157 
161 
165 
169 
173 
177 
181 
185 
189 
193 
197 
199  };
A patch list with 4 control point.
Definition: RenderEnums.h:84
A line list with adjacency information.
Definition: RenderEnums.h:56
A patch list with 12 control point.
Definition: RenderEnums.h:116
A patch list with 25 control point.
Definition: RenderEnums.h:168
A patch list with 28 control point.
Definition: RenderEnums.h:180
A patch list with 5 control point.
Definition: RenderEnums.h:88
A patch list with 1 control point.
Definition: RenderEnums.h:72
A patch list with 26 control point.
Definition: RenderEnums.h:172
A patch list with 3 control point.
Definition: RenderEnums.h:80
A patch list with 30 control point.
Definition: RenderEnums.h:188
A patch list with 7 control point.
Definition: RenderEnums.h:96
A patch list with 16 control point.
Definition: RenderEnums.h:132
A line strip with adjacency information.
Definition: RenderEnums.h:60
A triangle strip with adjacency information.
Definition: RenderEnums.h:68
A triangle list with adjacency information.
Definition: RenderEnums.h:64
A patch list with 11 control point.
Definition: RenderEnums.h:112
A patch list with 20 control point.
Definition: RenderEnums.h:148
A patch list with 22 control point.
Definition: RenderEnums.h:156
A strip of connected triangles, such that each vertex after the first three vertices defines a new tr...
Definition: RenderEnums.h:52
A patch list with 9 control point.
Definition: RenderEnums.h:104
A patch list with 17 control point.
Definition: RenderEnums.h:136
A patch list with 21 control point.
Definition: RenderEnums.h:152
Definition: RenderEnums.h:198
A patch list with 24 control point.
Definition: RenderEnums.h:164
A patch list with 2 control point.
Definition: RenderEnums.h:76
A polyline, where each point is connected to the previous vertex, yielding a single polyline with (ve...
Definition: RenderEnums.h:37
A patch list with 23 control point.
Definition: RenderEnums.h:160
A patch list with 8 control point.
Definition: RenderEnums.h:100
A list of independent points.
Definition: RenderEnums.h:27
A patch list with 10 control point.
Definition: RenderEnums.h:108
A patch list with 14 control point.
Definition: RenderEnums.h:124
A patch list with 18 control point.
Definition: RenderEnums.h:140
A patch list with 27 control point.
Definition: RenderEnums.h:176
A patch list with 15 control point.
Definition: RenderEnums.h:128
A list of unconnected triangles, yielding (vertex_count / 3) triangles.
Definition: RenderEnums.h:41
A patch list with 19 control point.
Definition: RenderEnums.h:144
A patch list with 29 control point.
Definition: RenderEnums.h:184
A patch list with 31 control point.
Definition: RenderEnums.h:192
A list of unconnected two-point line segments, such that the number of lines is the the total number ...
Definition: RenderEnums.h:32
A patch list with 6 control point.
Definition: RenderEnums.h:92
A patch list with 13 control point.
Definition: RenderEnums.h:120
A patch list with 32 control point.
Definition: RenderEnums.h:196

This flag describes the way to clear the current buffers.

Enumerator
ClearBackbuffer 

clear the target

ClearDepthBuffer 

clear the zbuffer

ClearStencilBuffer 

clear the stencil

ClearAll 

clear the zbuffer, target & stencil

204  {
207  ClearBackbuffer = 0x1,
210  ClearDepthBuffer = 0x2,
213  ClearStencilBuffer = 0x4,
216  ClearAll = 0x7,
217  };
clear the stencil
Definition: RenderEnums.h:213
clear the zbuffer, target & stencil
Definition: RenderEnums.h:216
clear the zbuffer
Definition: RenderEnums.h:210
clear the target
Definition: RenderEnums.h:207

blend selector.

selects a blend source/destination

Enumerator
BlendSelectorBlendFactor 

use blend factor in blend state

BlendSelectorBothInvSourceAlpha 

use inverse source alpha

BlendSelectorBothSourceAlpha 

use source aplha

BlendSelectorDestinationAlpha 

use the destination alpha

BlendSelectorDestinationColor 

use the destination color

BlendSelectorInvBlendFactor 

use inversed blend factor

BlendSelectorInvDestinationAlpha 

use the inverse destination alpha

BlendSelectorInvDestinationColor 

use the inverse destination color

BlendSelectorInvSourceAlpha 

use inverse source alpha

BlendSelectorInvSourceColor 

use inverse source color

BlendSelectorOne 

always 1,1,1

BlendSelectorSourceAlpha 

use the source alpha

BlendSelectorSourceAlphaSat 

use the source alpha and saturate it

BlendSelectorSourceColor 

use the source color

BlendSelectorZero 

always 0

222  {
268 
269  };
use the destination alpha
Definition: RenderEnums.h:234
use the source alpha and saturate it
Definition: RenderEnums.h:261
use blend factor in blend state
Definition: RenderEnums.h:225
use inverse source color
Definition: RenderEnums.h:252
use the source alpha
Definition: RenderEnums.h:258
use source aplha
Definition: RenderEnums.h:231
use the inverse destination alpha
Definition: RenderEnums.h:243
use the destination color
Definition: RenderEnums.h:237
always 0
Definition: RenderEnums.h:267
use the source color
Definition: RenderEnums.h:264
use inversed blend factor
Definition: RenderEnums.h:240
always 1,1,1
Definition: RenderEnums.h:255
use inverse source alpha
Definition: RenderEnums.h:249
use inverse source alpha
Definition: RenderEnums.h:228
use the inverse destination color
Definition: RenderEnums.h:246
enum CullMode

cull type.

Enumerator
CullModeCW 

cull backfaces of CW polygons

CullModeCCW 

cull backfaces of CCW polygons

CullModeNone 

don't cull backfaces

275  {
278  CullModeCW,
281  CullModeCCW,
285  };
cull backfaces of CW polygons
Definition: RenderEnums.h:278
don't cull backfaces
Definition: RenderEnums.h:284
cull backfaces of CCW polygons
Definition: RenderEnums.h:281
enum FillMode

fill mode for polygons

Enumerator
FillSolid 

draw as a solid object

FillWireFrame 

draw as a wireframe object

291  {
294  FillSolid,
298  } ;
draw as a wireframe object
Definition: RenderEnums.h:297
draw as a solid object
Definition: RenderEnums.h:294

compare functions

Enumerator
CompareFunctionAlways 

always true

CompareFunctionEqual 

true if equal

CompareFunctionGreater 

true if greater

CompareFunctionGreaterEqual 

true if greater or equal

CompareFunctionLess 

true if less

CompareFunctionLessEqual 

true if less or equal

CompareFunctionNever 

never true

CompareFunctionNotEqual 

true if not equal

303  {
328  };
true if less
Definition: RenderEnums.h:318
true if greater or equal
Definition: RenderEnums.h:315
true if not equal
Definition: RenderEnums.h:327
always true
Definition: RenderEnums.h:306
true if less or equal
Definition: RenderEnums.h:321
never true
Definition: RenderEnums.h:324
true if equal
Definition: RenderEnums.h:309
true if greater
Definition: RenderEnums.h:312
Enumerator
ColorWriteEnableNone 

None, all off.

ColorWriteEnableAlpha 

Write alpha.

Same as d3d.ColorWriteEnable.Alpha,

ColorWriteEnableBlue 

Write blue.

Same as d3d.ColorWriteEnable.Blue,

ColorWriteEnableGreen 

Write green.

Same as d3d.ColorWriteEnable.Green,

ColorWriteEnableRed 

Write red.

Same as d3d.ColorWriteEnable.Red,

ColorWriteEnableRedGreenBlue 

Write RGB but no alpha.

Same as d3d.ColorWriteEnable.RedGreenBlue,

ColorWriteEnableRedGreenBlueAlpha 

Write all RGBA.

Same as d3d.ColorWriteEnable.RedGreenBlueAlpha,

WRITEENABLE_FORCE_DWORD 
331  {
338  ColorWriteEnableAlpha = 0x8,
342  ColorWriteEnableBlue = 0x4,
346  ColorWriteEnableGreen = 0x2,
350  ColorWriteEnableRed = 0x1,
359 
360  WRITEENABLE_FORCE_DWORD = 0x7fffffff, /* force 32-bit size enum */
361  };
Write green.
Definition: RenderEnums.h:346
Write alpha.
Definition: RenderEnums.h:338
Write all RGBA.
Definition: RenderEnums.h:358
Write RGB but no alpha.
Definition: RenderEnums.h:354
Write blue.
Definition: RenderEnums.h:342
Write red.
Definition: RenderEnums.h:350
None, all off.
Definition: RenderEnums.h:334
Definition: RenderEnums.h:360

blend operations

Enumerator
BlendOperationAdd 

add the source and destination together

BlendOperationMax 

max of the source and destination

BlendOperationMin 

min of the source and destination

BlendOperationSubtract 

dest gets dest minus source

BlendOperationReverseSubtract 

dest gets source minus dest

366  {
382  };
dest gets source minus dest
Definition: RenderEnums.h:381
min of the source and destination
Definition: RenderEnums.h:375
dest gets dest minus source
Definition: RenderEnums.h:378
add the source and destination together
Definition: RenderEnums.h:369
max of the source and destination
Definition: RenderEnums.h:372

Stencil buffer operation.

Enumerator
StencilOperationTypeDecrement 

Decrement the stencil buffer entry, wrapping to the maximum value if the new value is less than zero.

Same as d3d.StencilOperation.Decrement,

StencilOperationTypeDecrementSaturation 

Decrement the stencil buffer entry, clamping to zero.

Same as d3d.StencilOperation.DecrementSaturation,

StencilOperationTypeIncrement 

Increment the stencil buffer entry, wrapping to zero if the new value exceeds the maximum value.

Same as d3d.StencilOperation.Increment,

StencilOperationTypeIncrementSaturation 

Increment the stencil buffer entry, clamping to the maximum value.

Same as d3d.StencilOperation.IncrementSaturation,

StencilOperationTypeInvert 

Invert the bits in the stencil-buffer entry.

Same as d3d.StencilOperation.Invert

StencilOperationTypeKeep 

Do not update the entry in the stencil buffer.

This is the default value. Same as d3d.StencilOperation.Keep,

StencilOperationTypeReplace 

Replace the stencil-buffer entry with a reference value.

Same as d3d.StencilOperation.Replace,

StencilOperationTypeZeroStencil 

Set the stencil-buffer entry to 0.

Same as d3d.StencilOperation.Zero,

STENCILOP_FORCE_DWORD 
388  {
397 
402 
407 
412 
417 
422 
427 
428  STENCILOP_FORCE_DWORD = 0x7fffffff, /* force 32-bit size enum */
429 
430  };
Decrement the stencil buffer entry, wrapping to the maximum value if the new value is less than zero...
Definition: RenderEnums.h:392
Increment the stencil buffer entry, clamping to the maximum value.
Definition: RenderEnums.h:406
Invert the bits in the stencil-buffer entry.
Definition: RenderEnums.h:411
Definition: RenderEnums.h:428
Replace the stencil-buffer entry with a reference value.
Definition: RenderEnums.h:421
Increment the stencil buffer entry, wrapping to zero if the new value exceeds the maximum value...
Definition: RenderEnums.h:401
Decrement the stencil buffer entry, clamping to zero.
Definition: RenderEnums.h:396
Do not update the entry in the stencil buffer.
Definition: RenderEnums.h:416
Set the stencil-buffer entry to 0.
Definition: RenderEnums.h:426
enum AccessType

AccessType Types for accessing buffers.

Enumerator
AccessTypeNone 

Data is not accessed yet.

ReadAcess 

Data will only be read.

WriteAcess 

Data will only be written.

ReadWriteAcess 
WriteDiscardAcess 

To be used by dynamic buffer for write-discard access.

435  {
438  AccessTypeNone = 0x0,
441  ReadAcess = 0x1,
444  WriteAcess = 0x2,
445  /* Data will be read and written.
446  */
451  };
To be used by dynamic buffer for write-discard access.
Definition: RenderEnums.h:450
Data is not accessed yet.
Definition: RenderEnums.h:438
Definition: RenderEnums.h:447
Data will only be read.
Definition: RenderEnums.h:441
Data will only be written.
Definition: RenderEnums.h:444

TargetFormat indicates which type the target/texture is.

Enumerator
TargetFormatUnkown 

Unknown target format.

TargetFormatD24S8 

depth 24, stencil 8

TargetFormatD24X8 

depth 24, no stencil

TargetFormatD32 

depth 32, no stencil

TargetFormatDxt1 

compressed format dxt1, no alpha

TargetFormatDxt2 

compressed format dxt2, premultiplied alpha, otherwise same as dxt3

TargetFormatDxt3 

compressed format dxt3, has alpha

TargetFormatDxt4 

compressed format dxt4, premultiplied alpha otherwise same as dxt5

TargetFormatDxt5 

compressed format dxt5, has alpha

TargetFormatA8 

8 bit alpha texture

TargetFormatR8 

8 bit one-channel texture

TargetFormatR16 

16 bit int one-channel texture

TargetFormatR16F 

16 bit float one-channel texture

TargetFormatA1R5G5B5 

one bit alpha, 5 bits each for RGB.

The layout of the short is:

15 14 10 5 0

| A | R | G | B |

TargetFormatR5G6B5 

no alpha, 5 bits each for R and B, 6 bits for G.

The layout of the short is:

15 11 5 0

| R | G | B |

TargetFormatR32F 

one-channel 32 bit float

TargetFormatR16G16 

two-channel, 16 bit int

TargetFormatR16G16F 

two-channel, 16 bit float

TargetFormatA8R8G8B8 

8 bit int for each of RGB and A, with byte ordering ARGB

TargetFormatA8B8G8R8 

8 bit int for each of RGB and A, with byte ordering ABGR

TargetFormatX8B8G8R8 

8 bit int for each of RGB, no alpha

TargetFormatA2B10G10R10 

2 bit alpha, 10 bits for each of RGB, with byte ordering ABGR

TargetFormatR32G32F 

two-channel 32 bit float

TargetFormatA16B16G16R16 

four-channel, 16 bit int for each of RGB and A, with byte ordering ABGR

TargetFormatA16B16G16R16F 

four-channel, 16 bit float for each of RGB and A, with byte ordering ABGR

TargetFormatA32B32G32R32F 

32 bit float for each of RGB and A, with byte ordering ABGR

TargetFormatX8R8G8B8 

8 bit int for each of RBA, no alpha

TargetFormatR32G32B32F 

three-channel, 32 bit float for each of RGB

TargetFormatR32UINT 

32bit unsigned int format

TargetFormatR32SINT 

32bit signed int format

TargetFormatCount 
456  {
551 
555 
559 
561  };
one bit alpha, 5 bits each for RGB.
Definition: RenderEnums.h:504
no alpha, 5 bits each for R and B, 6 bits for G.
Definition: RenderEnums.h:511
2 bit alpha, 10 bits for each of RGB, with byte ordering ABGR
Definition: RenderEnums.h:532
8 bit int for each of RBA, no alpha
Definition: RenderEnums.h:547
three-channel, 32 bit float for each of RGB
Definition: RenderEnums.h:550
32bit signed int format
Definition: RenderEnums.h:558
depth 32, no stencil
Definition: RenderEnums.h:468
16 bit int one-channel texture
Definition: RenderEnums.h:494
four-channel, 16 bit float for each of RGB and A, with byte ordering ABGR
Definition: RenderEnums.h:541
compressed format dxt5, has alpha
Definition: RenderEnums.h:485
8 bit int for each of RGB and A, with byte ordering ARGB
Definition: RenderEnums.h:523
8 bit int for each of RGB and A, with byte ordering ABGR
Definition: RenderEnums.h:526
Unknown target format.
Definition: RenderEnums.h:459
one-channel 32 bit float
Definition: RenderEnums.h:514
16 bit float one-channel texture
Definition: RenderEnums.h:497
two-channel, 16 bit int
Definition: RenderEnums.h:517
Definition: RenderEnums.h:560
two-channel, 16 bit float
Definition: RenderEnums.h:520
compressed format dxt2, premultiplied alpha, otherwise same as dxt3
Definition: RenderEnums.h:475
8 bit int for each of RGB, no alpha
Definition: RenderEnums.h:529
compressed format dxt4, premultiplied alpha otherwise same as dxt5
Definition: RenderEnums.h:482
compressed format dxt3, has alpha
Definition: RenderEnums.h:478
compressed format dxt1, no alpha
Definition: RenderEnums.h:471
32 bit float for each of RGB and A, with byte ordering ABGR
Definition: RenderEnums.h:544
8 bit alpha texture
Definition: RenderEnums.h:488
32bit unsigned int format
Definition: RenderEnums.h:554
depth 24, stencil 8
Definition: RenderEnums.h:462
8 bit one-channel texture
Definition: RenderEnums.h:491
two-channel 32 bit float
Definition: RenderEnums.h:535
depth 24, no stencil
Definition: RenderEnums.h:465
four-channel, 16 bit int for each of RGB and A, with byte ordering ABGR
Definition: RenderEnums.h:538

This enum specifies the feature levels device supported.

Enumerator
Level_Unknown 

Unknown feature level.

Level_NULL 

NULL feature level.

Level2_0 

Feature Level 2_0.

Level2_1 

Feature Level 2_1.

Level3_0 

Feature Level 3_0.

Level3_1 

Feature Level 3_1.

Level4_0 

Feature Level 4_0.

Level4_1 

Feature Level 4_1 Notes: Feature Level4_1 corresponds to the NV DX10+ device, which supports some of DX10.1 features.

Level4_5 

Feature Level 4_5 Notes: Feature Level4_5 corresponds to DX10.1 device, which supports all of DX10.1 features.

The OS must be Vista SP1 or above.

Level5_0 

Feature Level 5_0 Notes: Feature Level5_0 corresponds to DX11 device, which supports all of DX11 features.

The OS must be "Vista SP2 + Platform update" or above.

Level_Count 

Feature Level count.

577  {
580  Level_Unknown = 0,
583  Level_NULL = 5,
586  Level2_0 = 20,
589  Level2_1 = 21,
592  Level3_0 = 30,
595  Level3_1 = 31,
598  Level4_0 = 40,
603  Level4_1 = 41,
608  Level4_5 = 45,
613  Level5_0 = 50,
614 
617  Level_Count = 9
618  };
Unknown feature level.
Definition: RenderEnums.h:580
Feature Level 2_1.
Definition: RenderEnums.h:589
Feature Level 2_0.
Definition: RenderEnums.h:586
Feature Level 3_1.
Definition: RenderEnums.h:595
Feature Level 3_0.
Definition: RenderEnums.h:592
Feature Level 4_0.
Definition: RenderEnums.h:598
Feature Level 5_0 Notes: Feature Level5_0 corresponds to DX11 device, which supports all of DX11 feat...
Definition: RenderEnums.h:613
Feature Level 4_1 Notes: Feature Level4_1 corresponds to the NV DX10+ device, which supports some of ...
Definition: RenderEnums.h:603
Feature Level 4_5 Notes: Feature Level4_5 corresponds to DX10.1 device, which supports all of DX10...
Definition: RenderEnums.h:608
NULL feature level.
Definition: RenderEnums.h:583
Feature Level count.
Definition: RenderEnums.h:617

Texture type enums.

Enumerator
TextureTypeUnknown 

unknown texture type

TextureTypeImage1D 

1d bitmap texture

TextureTypeImage1DArray 

1d bitmap texture array

TextureTypeImage2D 

bitmap texture

TextureTypeImage2DArray 

bitmap texture

TextureTypeCubeMap 

cube map texture

TextureTypeVolume 

volume texture

TextureTypeCount 
630  {
633  TextureTypeUnknown = 0,
634 
637  TextureTypeImage1D = 1,
638 
642 
645  TextureTypeImage2D = 3,
646 
650 
653  TextureTypeCubeMap = 5,
654 
657  TextureTypeVolume = 6,
658 
660  };
1d bitmap texture array
Definition: RenderEnums.h:641
unknown texture type
Definition: RenderEnums.h:633
volume texture
Definition: RenderEnums.h:657
1d bitmap texture
Definition: RenderEnums.h:637
cube map texture
Definition: RenderEnums.h:653
Definition: RenderEnums.h:659
bitmap texture
Definition: RenderEnums.h:649
bitmap texture
Definition: RenderEnums.h:645

Resource usage, used for texture.

Enumerator
ResourceUsageNormal 

Normal usage, means it's a video memory resource Immutable or default depending on access.

ResourceUsageDynamic 

If the resource contents are to be changed often, ResourceUsageDynamic is recommended to achieve fast update.

Used with the correct map flag( WriteDiscard or WriteNoOverwrite), maximum performance to change the contents will be achieved. Meaning of WriteNoOverwrite: WriteNoOverwrite signifies that the application promises not to write to data that the GPU is using. In exchange, the GPU allows the application to write to other parts of the same buffer. The application must ensure that it does not write over any data in use by the GPU. Common Usage of WriteDiscard with WriteNoOverwrite as map flags: WriteDiscard and WriteNoOverwrite are normally used in conjunction with dynamic index/vertex buffers, although they can also be used with dynamic textures. A common use of these two flags involves filling dynamic index/vertex buffers with geometry that can be seen from the camera's current position. The first time that data is entered into the buffer on a given frame, Map is called with WriteDiscard; doing so invalidates the previous contents of the buffer. The buffer is then filled with all available data. Subsequent writes to the buffer within the same frame should use WriteNoOverwrite. This will enable the CPU to access a resource that is potentially being used by the GPU as long as the restrictions described previously are respected.

ResourceUsageStaging 

Staging usage, means it's a system memory resource on each devices.

For cpu readback

ResourceUsageMask 

Usage mask.

For anding off the high bits

ResourceUsageStream 

Usage for stream output.

For vb & ibs, may be used as a texture

ResourceUsageTarget 

Usage for render target, it means the resource created from video memory and can be used as render-target for vb & ibs & textures, may be used as a render target/stream output buffer.

665  {
670 
688 
693 
696  ResourceUsageMask = 0xf,
697 
700  ResourceUsageStream = 0x10,
701 
706  ResourceUsageTarget = 0x20,
707  };
If the resource contents are to be changed often, ResourceUsageDynamic is recommended to achieve fast...
Definition: RenderEnums.h:687
Usage for render target, it means the resource created from video memory and can be used as render-ta...
Definition: RenderEnums.h:706
Normal usage, means it's a video memory resource Immutable or default depending on access...
Definition: RenderEnums.h:669
Usage mask.
Definition: RenderEnums.h:696
Staging usage, means it's a system memory resource on each devices.
Definition: RenderEnums.h:692
Usage for stream output.
Definition: RenderEnums.h:700
enum QueryType

Enums for QueryHandle, indicates which query types to issue.

Refer D3D11_QUERY in DirectX Graphics Document for detail.

Enumerator
QueryType_Event 

Same as D3D11_QUERY_EVENT Determines whether or not the GPU is finished processing commands.

QueryType_Occlusion 

Same as D3D11_QUERY_OCCLUSION Get the number of samples that passed the depth and stencil tests in between QueryHandle::Begin() and QueryHandle::End().

QueryType_TimeStamp 

Same as D3D11_QUERY_TIMESTAMP Get a timestamp value from QueryHandle::GetData()

QueryType_Occlusion_Test 

Same as D3D11_QUERY_OCCLUSION_PREDICATE Return BOOL in QueryHandle::GetData(), indicates any pixels passes depth and stencil tests.

QueryType_SO_Overflow_Test 

Same as D3D11_QUERY_SO_OVERFLOW_PREDICATE Indicates whether or not any of the streaming output buffers overflowed between QueryHandle::Begin() and QueryHandle::End().

QueryType_SO_Stats 

Same as D3D11_QUERY_SO_STATISTICS Get streaming output statistics, such as the number of primitives streamed out in between QueryHandle::Begin() and QueryHandle::End().

713  {
717  QueryType_Event = 8,
726  QueryType_TimeStamp = 10,
740  QueryType_SO_Stats = 22
741  };
Same as D3D11_QUERY_OCCLUSION_PREDICATE Return BOOL in QueryHandle::GetData(), indicates any pixels p...
Definition: RenderEnums.h:730
Same as D3D11_QUERY_TIMESTAMP Get a timestamp value from QueryHandle::GetData()
Definition: RenderEnums.h:726
Same as D3D11_QUERY_EVENT Determines whether or not the GPU is finished processing commands...
Definition: RenderEnums.h:717
Same as D3D11_QUERY_OCCLUSION Get the number of samples that passed the depth and stencil tests in be...
Definition: RenderEnums.h:722
Same as D3D11_QUERY_SO_STATISTICS Get streaming output statistics, such as the number of primitives s...
Definition: RenderEnums.h:740
Same as D3D11_QUERY_SO_OVERFLOW_PREDICATE Indicates whether or not any of the streaming output buffer...
Definition: RenderEnums.h:735
Enumerator
ZBiasPresets_Default 
ZBiasPresets_Shaded 
ZBiasPresets_Wireframe 
ZBiasPresets_Gizmo 
32 {
33  ZBiasPresets_Default = -1, //Auto z bias set by system
37 };
Definition: RenderItemHandle.h:36
Definition: RenderItemHandle.h:33
Definition: RenderItemHandle.h:35
Definition: RenderItemHandle.h:34

This enum defines in what group a render item is visible.

Enumerator
RenderItemVisible_Unknown 

By default, all render items are in default visible group.

That means the system will determine when the render item will be displayed based on the render item traits. If the render item is mesh, it will be displayed in shaded/realistic mode. If the render item is lines, it will be displayed in wireframe/edged faces mode. Any other render items including display callbacks will be displayed as gizmos.

RenderItemVisible_Shaded 

This kind of render item will only be visible if visual style is shaded or realistic.

RenderItemVisible_Wireframe 

This kind of render item is visible in wireframe visual style, or edged faces is on, or "wireframe selected" is on and the node is selected.

RenderItemVisible_Gizmo 

This kind of render item is always visible, no matter what the visual style is.

42 {
51 
56 
61 
66 };
This kind of render item is visible in wireframe visual style, or edged faces is on, or "wireframe selected" is on and the node is selected.
Definition: RenderItemHandle.h:60
By default, all render items are in default visible group.
Definition: RenderItemHandle.h:50
This kind of render item is always visible, no matter what the visual style is.
Definition: RenderItemHandle.h:65
This kind of render item will only be visible if visual style is shaded or realistic.
Definition: RenderItemHandle.h:55

This enum contains flags that can be combined together to specify which part is required by the node when updating render items.

Enumerator
ObjectComponentSolidMesh 

Require solid mesh, it could be: vertex color mesh or general mesh.

This will be displayed in any viewport that requires smooth mesh.

ObjectComponentWireframe 

Require wireframe mesh, this layer includes the edges.

This will be displayed in viewport that has "wireframe" or "hidden line" on.

ObjectComponentVertexTicks 

Require vertex ticks.

This will be displayed when the node has "Vertex Ticks" display option on or the vertex tick sub-object be selected.

ObjectComponentDiagonal 

Require diagonals.

This is the dotted edge lines when user enabled "show edges" of a node and enable the wireframe mode of viewport.

ObjectComponentSelected 

one or more of the node is selected

ObjectComponentUnselected 

one or more of the node is not selected

ObjectComponentBackfaceCull 

one or more of the node has the object property "Backface Cull" on.

ObjectComponentVertexColorSoftSelection 

one or more of the node has the object property "Vertex Channel Display" on and the active channel is soft selection

26 {
30  ObjectComponentSolidMesh = 0x00000001,
34  ObjectComponentWireframe = 0x00000002,
38  ObjectComponentVertexTicks = 0x00000004,
42  ObjectComponentDiagonal = 0x00000008,
45  ObjectComponentSelected = 0x00000010,
48  ObjectComponentUnselected = 0x00000020,
51  ObjectComponentBackfaceCull = 0x00000040,
56 };
Require solid mesh, it could be: vertex color mesh or general mesh.
Definition: UpdateDisplayContext.h:30
one or more of the node is selected
Definition: UpdateDisplayContext.h:45
Require diagonals.
Definition: UpdateDisplayContext.h:42
Require wireframe mesh, this layer includes the edges.
Definition: UpdateDisplayContext.h:34
one or more of the node has the object property "Backface Cull" on.
Definition: UpdateDisplayContext.h:51
one or more of the node has the object property "Vertex Channel Display" on and the active channel is...
Definition: UpdateDisplayContext.h:55
one or more of the node is not selected
Definition: UpdateDisplayContext.h:48
Require vertex ticks.
Definition: UpdateDisplayContext.h:38

Function Documentation

FragmentGraphAPI bool MaxSDK::Graphics::IsNumberType ( VarType  type)

Checks if the given type is number type.

Parameters
[in]typetype value.
Returns
true if the type is a number type, (for example, char, wide char, int, double), false otherwise.
FragmentGraphAPI bool MaxSDK::Graphics::IsCompatibleType ( VarType  lhs,
VarType  rhs 
)

Checks if two types can be converted to each other.

Parameters
[in]lhsThe first type.
[in]rhsThe second type.
Returns
true if two types are equal or both are numbers, false otherwise.
DataBridgeAPI size_t MaxSDK::Graphics::GetVertexStride ( const VertexFieldType  type)

Get the vertex stride by a given vertex type, in bytes.

Parameters
typethe vertex type.
Returns
the vertex stride, in bytes.
DataBridgeAPI size_t MaxSDK::Graphics::GetIndexStride ( const IndexType  type)

Get the index stride by a given index type, in bytes.

Parameters
typethe index type.
Returns
the index stride, in bytes.
GraphicsDriverAPI size_t MaxSDK::Graphics::CombineHashCode ( size_t  seed,
size_t  hashCode 
)

A utility function for generating hash code.

Interface_ID id = PLUGIN_CONSOLIDATION_INTERFACE_ID;
size_t key = CombineHashCode(0, id.PartA()); //Initialize a new key
mHashKey = CombineHashCode(key, id.PartB()); //Combine new data with existing key
Returns
new code from seed and hash code.
UtilExport IDisplayManager * GetIDisplayManager ( )

Helper function to access the IDisplayManager core interface.

Returns
A pointer to IDisplayManager
bool MaxSDK::Graphics::IsRetainedModeEnabled ( )
inline

Helper function to test whether the new viewport graphics system is running.

Returns
TRUE if new viewport graphics is active
79 {
80  IDisplayManager* pGraphicsManager = GetIDisplayManager();
81  return NULL != pGraphicsManager && pGraphicsManager->IsRetainedModeEnabled();
82 }
UtilExport MaxSDK::Graphics::IDisplayManager * GetIDisplayManager()
Helper function to access the IDisplayManager core interface.
#define NULL
Definition: autoptr.h:18
bool MaxSDK::Graphics::IsHardwareHitTesting ( ViewExp vpt)
inline

Helper function to test whether the new viewport graphics system is performing hardware hit testing.

Parameters
vptThe specific viewport in which we want to know whether we are performing hardware hit testing.
Returns
TRUE if new viewport graphics is performing hardware hit testing.
89 {
90  IDisplayManager* pGraphicsManager = GetIDisplayManager();
91  return NULL != pGraphicsManager && pGraphicsManager->IsHardwareHitTesting(vpt);
92 }
UtilExport MaxSDK::Graphics::IDisplayManager * GetIDisplayManager()
Helper function to access the IDisplayManager core interface.
#define NULL
Definition: autoptr.h:18
bool MaxSDK::Graphics::operator== ( void pPtr,
const RefPtr< RefObjectType, SafeRefObjectType, LifeTimePolicy > &  pInterface 
)
inline
381 {
382  return pPtr == pInterface.GetPointer();
383 }
bool MaxSDK::Graphics::operator!= ( void pPtr,
const RefPtr< RefObjectType, SafeRefObjectType, LifeTimePolicy > &  pInterface 
)
inline
392 {
393  return pPtr != pInterface.GetPointer();
394 }
GraphicsDriverAPI void MaxSDK::Graphics::MaxWorldMatrixToMatrix44 ( Matrix44 outMatrix,
const Matrix3 inMatrix 
)

Convert Matrix3 to Matrix44.

Parameters
outMatrixthe Matrix44 output
inMatrixthe source Matrix3
GraphicsDriverAPI void MaxSDK::Graphics::Matrix44ToMaxWorldMatrix ( Matrix3 outMatrix,
const Matrix44 inMatrix 
)

Convert Matrix44 to Matrix3.

Parameters
outMatrixthe Matrix3 output
inMatrixthe source Matrix44
GraphicsDriverAPI const MeshElementDescription& MaxSDK::Graphics::GetBuiltInMeshElementDescription ( BuiltInMeshElementDescription  type)

Get a specified built-in mesh element description.

Parameters
typethe kind of built-in mesh element description
Returns
the specified mesh element description.
GraphicsDriverAPI DWORD MaxSDK::Graphics::GetDeviceCompatibleARGBColor ( DWORD  color)

Use this function for TargetFormatA8R8G8B8 only.

DX10/11 doesn't support A8R8G8B8 which is only supported in DX9. So when we're using DX10/11 device, we will meet with color shift issue with the A8R8G8B8 format. So for a TargetHandle of TargetFormatA8R8G8B8, you may call this function to get a device compatible color.

Parameters
colorThe original color data.
Returns
the original color for a DX9 device. For DX10/DX11 device, returns a color with red and blue channels swapped.
GraphicsDriverAPI size_t MaxSDK::Graphics::GetTargetFormatPixelSize ( TargetFormat  format)

Get the number of bytes for each pixel by a given target format.

Parameters
formatThe given target format.
Returns
The number of bytes for each pixel by that given target format.
GraphicsDriverAPI VertexBufferHandle MaxSDK::Graphics::GenerateInstanceData ( Matrix3 worldTransforms,
size_t  count 
)

Generate the instance data from a Matrix3 array.

Remarks
The input matrix array should contain object-to-world matrices. Each matrix is used to render an mesh instance. The return object VertexBufferHandle is needed by GenerateInstanceRenderItem(). Multiple instance render items can sharing the same VertexBufferHandle. The returned vertex buffer contains world matrices and inverse transpose world matrices. This function automatically compute inverse transpose world matrices from world matrices and then fill the buffer.
Parameters
worldTransformspointer to world transform matrices. Each matrix is a instance of Mesh.
countthe number of the instances
Returns
the instance data handle.
GraphicsDriverAPI VertexBufferHandle MaxSDK::Graphics::GenerateInstanceData ( Point3 UVs,
Matrix3 worldTransforms,
size_t  count 
)

Generate the instance data from a texture coordinates array and a Matrix3 array.

Remarks
The input matrix array should contain object-to-world matrices. Each matrix is used to render an mesh instance which can have different texture coordinate. The return object VertexBufferHandle is needed by GenerateInstanceRenderItem(). Multiple instance render items can sharing the same VertexBufferHandle. The returned vertex buffer contains texture coordinate, world matrices and inverse transpose world matrices. This function automatically compute inverse transpose world matrices from world matrices and then fill the buffer.
Parameters
UVspointer to texture coordinate array.Each texture coordinate pair is for an instance of Mesh.
worldTransformspointer to world transform matrices. Each matrix is an instance of Mesh.
countthe number of the instances
Returns
the instance data handle.
GraphicsDriverAPI bool MaxSDK::Graphics::GenerateInstanceRenderItem ( RenderItemHandle hInstanceRenderItem,
const RenderItemHandle hTupleMeshHandle,
const VertexBufferHandle hInstanceData 
)

Generate the instance render item from a tuple mesh and a Matrix3 array.

Remarks
Instance rendering is a way to draw many objects that use the same geometry. These objects shares same materials and modifiers. The only difference between objects is world transformation. You can specify a matrix array for the mesh, then the mesh will be drawn for many times. Each corresponds to a matrix in the array. Typical usage of these instance functions should like following:
//Sample code fragment in IDisplay::UpdateDisplay()
//1. Generate render items from mesh.
mesh.GenerateRenderItems(tempRenderItemArray, generateRenderItemsContext);
//2. Generate instance data. The data can be shared by multiply instance render items.
MaxSDK::Graphics::GenerateInstanceData(Matrices, NumberOfMatrices);
//3. Check all of the render items and covert them to instance render item.
for (size_t i = 0; i < tempRenderItemArray.length(); ++i)
{
//4. Try to generate instance render item. Only tuple mesh render item can convert to instance render item
if (MaxSDK::Graphics::GenerateInstanceRenderItem(hInstanceItem, tempRenderItemArray[i], hInstanceData))
{
//If the function succeeded, add the generated instance render item to final render item array(mRenderItemHandles).
mRenderItemHandles.append(hInstanceItem) ;
}
else
{
//If the function failed, add original render item to the final array(mRenderItemHandles).
//Typically this render item is other render item type like immediate render item.
mRenderItemHandles.append(tempRenderItemArray[i]);
}
}
Parameters
hInstanceRenderItemthe instance render item handle which can replace original tuple mesh render item.
hTupleMeshHandlehandle of a tuple mesh render item
hInstanceDatahandle generated by GenerateInstanceData
Returns
true if successful created the instance render item.

Variable Documentation

FragmentGraphAPI Class_ID TYPE_ID_Char

Built-in char input/output type.

This can be used in the constructor of class Input/Output.

FragmentGraphAPI Class_ID TYPE_ID_UnsignedChar

Built-in unsigned char input/output type.

This can be used in the constructor of class Input/Output.

FragmentGraphAPI Class_ID TYPE_ID_WideChar

Built-in wchar_t input/output type.

This can be used in the constructor of class Input/Output.

FragmentGraphAPI Class_ID TYPE_ID_Short

Built-in short input/output type.

This can be used in the constructor of class Input/Output.

FragmentGraphAPI Class_ID TYPE_ID_UnsignedShort

Built-in unsigned short input/output type.

This can be used in the constructor of class Input/Output.

Built-in int input/output type.

This can be used in the constructor of class Input/Output.

FragmentGraphAPI Class_ID TYPE_ID_UnsignedInt

Built-in unsigned int input/output type.

This can be used in the constructor of class Input/Output.

FragmentGraphAPI Class_ID TYPE_ID_Long

Built-in long input/output type.

This can be used in the constructor of class Input/Output.

FragmentGraphAPI Class_ID TYPE_ID_UnsignedLong

Built-in unsigned long input/output type.

This can be used in the constructor of class Input/Output.

FragmentGraphAPI Class_ID TYPE_ID_Int64

Built-in __int64 input/output type.

This can be used in the constructor of class Input/Output.

FragmentGraphAPI Class_ID TYPE_ID_UnsignedInt64

Built-in unsigned __int64 input/output type.

This can be used in the constructor of class Input/Output.

FragmentGraphAPI Class_ID TYPE_ID_Float

Built-in float input/output type.

This can be used in the constructor of class Input/Output.

FragmentGraphAPI Class_ID TYPE_ID_Double

Built-in double input/output type.

This can be used in the constructor of class Input/Output.

FragmentGraphAPI Class_ID TYPE_ID_StringA

Built-in multi-byte string input/output type.

This can be used in the constructor of class Input/Output.

FragmentGraphAPI Class_ID TYPE_ID_StringW

Built-in Unicode string input/output type.

This can be used in the constructor of class Input/Output.

FragmentGraphAPI Class_ID TYPE_ID_Dictionary

Built-in dictionary input/output type.

This can be used in the constructor of class Input/Output.

const size_t TIMER_NONE = (size_t)-1

Use this value to unregister a timer with a fragment.

See also
Fragment::SetTimerTicks(DWORD timerTicks)
GraphicsDriverAPI IndexBufferHandle EmptyIndexBufferHandle
GraphicsDriverAPI TargetHandle EmptyTargetHandle
const Identifier NIL_ID = (Identifier)-1

Invalid id value.

GraphicsDriverAPI VertexBufferHandle EmptyVertexBufferHandle
GraphicsDriverAPI MaxSDK::Array<VertexBufferHandle> EmptyVertexBufferHandleArray