KernelCAD Documentation

DInsight Home
Skip Navigation Links.
Start page
Quick Start
Installation
Overview of the software
What is new
Collapse KernelCAD ModelsKernelCAD Models
Collapse KernelCAD ComponentsKernelCAD Components
KernelCAD Control
KernelCAD .NET Control
Methods and Properties
Menu
Model Explorer
Birds Eye View
Programming
Direct User Access
Direct Operations
Interface Queries
Printing Support
Data Types
Modes of KernelCAD Control
DIObjectGenerator class
Properties
FlatObjectArray Poperty
Context
64 bit development
Dual Mode
Initialisation Context
Overlay Editor
Memory Management
Input validation
Collapse Advanced functionalityAdvanced functionality
Collapse InterfacesInterfaces
Alphabetical list
I3DGrid
I3DBugger
I3Dpt
IAxiBase
IAxis
IBoolSection
IBoolSectionEx
IBoundary
IColor
IConstraint
IData
IDiffSurface_KC
IDIFont
IDraw
IDrawUtil
IDraw2
IElem
IElement
IKCLine
ILightSource
ILocation
ILocationEx
IMaterial
IMetrics
IMetrics2
IModel
IModel2
IModelEx
IPatch
IKCPathCollisionDetector
IProfiles
IPropertyArray
IPropertyArray2
IStdShape
IStrip
ISurface
IText
ITexture
ITransform
IUnknown
Collapse Open Cascade TechnologyOpen Cascade Technology
Collapse DataData
Collapse MovementMovement
Collapse FramesFrames
Collapse Oriented ObjectsOriented Objects
Collapse SectionsSections
Collapse GeneralGeneral
Collapse Topological InterfacesTopological Interfaces
Collapse Viewing InterfacesViewing Interfaces
Collapse Lines And CurvesLines And Curves
Collapse Symmetry InterfacesSymmetry Interfaces
Collapse Clipping plane interfacesClipping plane interfaces
Collapse AlgorithmsAlgorithms
Collapse 2D Geometry2D Geometry
Collapse Programming Samples and TutorialsProgramming Samples and Tutorials
Collapse OverviewOverview
Collapse DeploymentDeployment
Collapse .NET Samples.NET Samples
Collapse C++ SamplesC++ Samples
Collapse Visual Basic SamplesVisual Basic Samples
Collapse Delphi SamplesDelphi Samples
Collapse 3D Debugger3D Debugger
Collapse DeploymentDeployment
Licensing
Model Viewer
Open C++ Source
Technical Support
Skip Navigation LinksHome Page > KernelCAD Components > Interfaces > ITexture
ITexture Interface

ITexture Interface

Load
IsLoaded
Unload
Enable
IsEnabled
Blend
GetBlendFlag
UseTexture
LoadFromHandle

ITexture interface manages texture of a surface. There are three ways to obtain reference to ITexture. 

1. Query from the correspondent ISection. In this case the loaded texture will be applied to all surfaces in the object. 

2. Query from a IElement implemented by a patch strip of the object (IModel->ISection->IStrip->IElement->ITexture). This method will apply the texture to a patch strip of side surface of the object (not top or bottom surfaces). After modifications of the texture obtained in this way a call to IItem.SetModified() is required for the changes to take effect. IItem can be quired from the ISection obtained  via the above query.

3. Using IPropertyArray of the object. ( IModel->ISection->IPropertyArray->IArray ("TextureArray") ->ITexture ). In the last method the texture array has the back surface texture as its element 0 and front texture as its element 1. Element 2 in the array will be the texture of side surface 0, Element 3 in the array will be the texture of side surface 1, etc.

UseTexture method of the interface allows sharing of a texture among different patch strips or surfaces. Note that this is a Pro level interface, which is not available in the standard KernelCAD or KernelCAD .NET.

See also Textures and Texture Programming sample


HRESULT  Load(char *szFilePath)

Parameters

szFilePath- [in] full path of a .bmp (bitmap) file

Returns

S_OK in case of success.

DISP_E_PARAMNOTOPTIONAL - in case szFilePath is not a valid path or file can not be opened for reading.

Remarks:

This method loads the image  into memory and assigns the texture to the surface(s) (see above). To be displayed the texture has to be activated using an Enable() method.


HRESULT IsLoaded(VARIANT_BOOL *pbLoaded)

Parameters

pbLoaded - [out] pointer to a Boolean variable, which will be set to true if the texture is loaded and false otherwise.

Return Values

S_OK in case of success.
Remarks:
 
Use this method to check at runtime if a surface has a texture assigned to it.


HRESULT  Unload()

Returns

S_OK  

Remarks:

This method removes reference to the texture from the surface. If there is no other surfaces using the texture  frees all resources allocated for the texture. 


HRESULT  Enable(VARIANT_BOOL bEnable)

Parameters

bEnable - [in] new value of the enabled state.

Returns

S_OK in case of success.

DISP_E_PARAMNOTOPTIONAL - if the texture is not loaded.

Remarks:

Activates or deactivates texture which is loaded for the surface. When enabled the texture will be rendered in 3D View. 


HRESULT IsEnabled(VARIANT_BOOL *pbEnabled)

Parameters

pbEnabled - [out] pointer to a Boolean variable, which will be set to true if the texture is enabled and false otherwise.

Returns

S_OK in case of success.

DISP_E_PARAMNOTOPTIONAL - if the texture is not loaded.

Remarks:

This method retrieves current state of enabled flag. 


HRESULT Blend(VARIANT_BOOL bBlend)

Parameters

bBlend - [in] if true the texture will be rendered combined with underlying color of the surface material and lighting. 

Returns

S_OK in case of success.

DISP_E_PARAMNOTOPTIONAL - if the texture is not loaded.

Remarks:

By default the texture is applied to the surface by blending with  underlying color of the surface material. Lighting is also used to render the surface. If this property is disabled  by using Blend() method the surface will be rendered by using the texture only.


HRESULT GetBlendFlag(VARIANT_BOOL *pbBlend)

Parameters

pbBlend - [out] pointer to a Boolean variable, which will be set to true if blending is enabled.

Returns

S_OK in case of success.

DISP_E_PARAMNOTOPTIONAL - if the texture is not loaded.

Remarks:

This method retrieves current state of blend  flag (See comments for Blend() method).


HRESULT UseTexture(ITexture* pITexture)

Parameters

pITexture - [in] Reference to ITexture interface implemented by another surface which will be sharing the texture. 

Returns

S_OK in case of success.

DISP_E_PARAMNOTOPTIONAL - if the texture is not loaded.

Remarks:

To save resources and improve performance surfaces can re-use textures. After call to this method the current surface will be sharing the texture with the surface, which loaded pITexture.


HRESULT LoadFromHandle(int handle)

Parameters

handle - [in] HBITMAP handle of a bitmap loaded into memory reinterpreted as 32 bits signed integer type

Returns

S_OK in case of success.

DISP_E_PARAMNOTOPTIONAL - if the texture could not be copied. The most frequent reason for this is that the handle is not a valid handle of a loaded bitmap. 

Remarks:

The method copies data from a bitmap loaded in memory. The actual type of the handle parameter must be HBITMAP. (See LoadBitmap() API in C++ documentation for your development Environment for more details). This method is mostly suppled for usage by native environments. After call to this method the memory used by the bitmap can be freed independently of the texture.