Namespace SearchAThing.OpenGL.Core
Classes
- BBox
Bounding box of a set of points.
It can be an oriented bounding box if created with custom coordinate system, WCS elsewhere is used as default.
- DebugVtxMgr
Debug object containing a vertex manager to allow create figures and a gl control to allow invalidate the view.
Used for debug purpose.
- DummyRenderDevice
A render device that doesn't write GL pixel anywhere.
This object can be used for testing purpouse.
- GLContext
Gl context object with purpose to:
- create Silk.NET gl window Silk.NET.Windowing.IWindow.
- expose Silk.NET.OpenGL.GL interface.
- handle font char cache through instance of GLFontCharManager.
- load GLPipeline objects used by the framework.
- handle environment variable "OPENGL_LIBRARY_PATH" for mesa win library } loading. Useful for windows guest on virtualbox linux host.
- handle gl debug messages by using DebugMessageCallback.
- create Silk.NET gl window Silk.NET.Windowing.IWindow.
- GLControl
Provides basic opengl abstraction to create entities such as GLPoint, GLLine and GLTriangle. It provides high level functions to manage camera view and related pan/zoom functions.
The Invalidate(InvalidateEnum) emit a RenderInvalidated event that SearchAThing.OpenGL.GUI.AvaloniaGLControl listen to invalidte its visual.
- GLFigureBase
Base abstract class for point, line, triangle figures.
- GLFigureTypeBase<P>
Template typed GLPrimitiveBase figure base operations such as Add and Remove primitives from the figure.
- GLFontChar
Holds a single font character bitmap and allocated texture.
- GLFontCharManager
Gl font char manager, allocated through gl context.
It manage the cache of GLFontChar avoid there are duplicates of the same gl font char for the same font/character.
- GLLine
Opengl line primitive.
- GLLineFigure
Specialization of typed figure within the GLLine primitive.
- GLMatrixes
Helper class to store model/view/projection and camera pos/target/up in a single object.
- GLModel
Gl model.
- contains the associated GLVertexManager
- the list of model figures GLFigureBase
- point lights GLPointLight.
- custom vertex managers AddCustomVertexManager(GLVertexManager)
- contains the default build model action.
- contains the associated GLVertexManager
- GLPipeline
Gl pipeline object.
Contains vertex, geometry and fragment shaders where defined and helper method to set uniforms, attributes ans storage blocks.
- GLPointFigure
Specialization of typed figure within the GLPoint} primitive.
- GLPointLight
Gl point light.
- GLShaderStorageBlock<T>
Manage mapping of given template typed data to gpu memory.
- GLText
Gl text object.
- GLTextCharFigure
Triangles figure with texture mapped to represent a char.
- GLTexture2D
Handle reference to gl texture.
- GLTriangleFigure
Specialization of typed figure within the GLTriangle primitive.
- GLVertexArrayObject<PacketStructure>
Helper to define and enable Vertex Array Object in order to declare how to access vertex buffer object at i-th packet structure components.
- GLVertexBufferObject<T>
Manage mapping of given template typed data to gpu memory.
- Line
Geometric entity 3d line.
Internally encoded as From and V vectors, where To = From + V.
Can be created through static methods FromTo(in Vector3, in Vector3) and PointV(in Vector3, in Vector3).
- MouseStart
Helper class to save GLControl gl matrixes and a screen start point mainly used for pan and rotate at the beginning of operation.
- OffscreenRenderDevice
Render device for offscreen mode that acts as a bitmap file writer.
- Plate
Plate geometry composed by four vertexes, used primarly to be converted in triangles with GetTriangles(Plate, in Color?, bool).
- PointTransformNfo
Helper class used by SearchAThing.OpenGL.GUI.GLDevTool.
Given the vertex, size, gl matrixes it will update object, normal, local, world, eye, clip, screen transformed coordinates.
- RayCastHitTest
Hold raycast hit test info.
Intersect(Line, float, GLFigureBase)
Structs
- GLMatrix4x4Struct
Structure that contains a matrix4x4.
It will be used by the RenderVertexManager(Func<GLFigureBase, bool>, GLPipeline, GLVertexManager, GLPointLightStruct[], GLMatrix4x4Struct[]) and loaded into gpu pipeline through GLShaderStorageBlock<T>.
- GLPointLightStruct
Structure that contains gl point light info.
It will be used by the RenderVertexManager(Func<GLFigureBase, bool>, GLPipeline, GLVertexManager, GLPointLightStruct[], GLMatrix4x4Struct[]) and loaded into the gpu pipeline through GLShaderStorageBlock<T>
- GLVertexStruct
Structure used by the vertex manager when register a vertex inside it.
This structure has an explicit layout for unmanaged access by the gpu and its used in GLControl during the phase of rendering.
- MaterialProperties
Describe the strength (0..1) of the ambient, diffuse, specular light effects.
Interfaces
- IGLContextObject
General inteface for objects that carrier a reference to Gl context.
- IGLFigure
This is the direct child of a vertex manager.
A figure contains primitives and primitive contains vertexes. The figure is useful to group together primitives and handle properties such as Visibile, Order, ObjectMatrix, ScreenCoord mode.
- IGLLine
Primitive for the GL_LINES opengl element.
- IGLPoint
Primitive for GL_POINTS opengl element.
- IGLPrimitive
A primitive such a GLPoint, GLLine or GLTriangle can be added to a figure through its add method.
A primitive can consists of 1, 2 or 3 GLVertex that will be registered into GLVertexManager when the primitive added to the figure and figure to the model through AddFigure(IEnumerable<GLFigureBase>).
- IGLTexture2D
Interface that describe the object hold a reference to a gl texture 2d.
- IGLTriangle
Primitive for GL_TRIANGLES opengl element.
- IGLTriangleFigure
Specialization of IGLFigure for the type GLTriangle.
- IGLVertex
Represent a vertex and its the base object managed by the GLVertexManager.
Primitives such as GLPoint, GLLine and GLTriangle store their vertex information using this type.
When the gl render happens ( see Render(IRenderDevice?) ) all the model vertexes are mapped to the gpu ram and figures with their vertex indexes are feed into.
Internally the GLVertexManager hold a struct projection of this object, the GLVertexStruct.
- IGLVertexManager
Vertex manager primary purpose is to keep a linear sequence of distinct GLVertexStruct structs that will populated by the gl vertex GLVertex objects.
The same GLVertex reference cannot be registered twice in vertex manager, these stay connected to their figure primitives until removed from.
- IGLVertexManagerObject
Interface for GL objects such as IGLFigure, IGLPrimitive and IGLVertex.
The purpose is to ensure that each object implementing this interface allow parent traversal till root vertex manager object which purpouse is to manage the collection of vertexes.
- IRenderDevice
A render device will read pixels from given gl context through ReadPixels and write to an appropriate device implementation ( avalonia, offscreen, dummy devices available ).
Enums
- GLNotificationType
Type of notification emitted by gl control.
- GLPrimitiveType
Enum that specify which type of primitive belong to a figure.
- GLTextVHAlignment
Gl text alignment respect given insertion point.
- GLVertexFlag
32bit vertex flags
- InvalidateEnum
Type of GLControl invalidation.
- YAxisOrientationEnum
Orientation of y axis [eye].
Delegates
- ComputeTriangleNormalDelegate
Compute normal function delegate.
- ControlFigureVisibileDelegate
Delegate for ControlFigureVisible.
It allow to customize the visilibty of a figure in relation within a Gl control.
- FigureEvent
Generic figure event from the vertex manager.
- FigureInvalidatedDelegate
Delegate for FigureInvalidated.
This event is managed internally by the GLModel and signal that a model figure changed some of its vertex propertties.
- FiguresEvent
Generic figures event from the vertex manager.
- GLBuildModelDelegate
Build model action that will executed each time the model requires a full rebuild because invalidated.
- ModelViewInvalidated
Use for ViewInvalidated event emitted when a vertex of the model change.
- NotificationDelegate
Used by the avalonia GL control to listen for notification coming from the model.
These notification will displayed using gui notification manager.
- RenderPreviewDelegate
Used by NotEmptyRenderPreview when notify the first non empty bbox render.
- VertexManagerInvalidatedDelegate
Delegate for the Invalidated event.