Skip to content

Yet another 2D/3D graphics library written in C++11

Notifications You must be signed in to change notification settings

eriser/Alloy-Graphics-Library

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Alloy Graphics Library

Alloy is yet another 2D/3D graphics library written in C++11. As mundane as that sounds, this API provides an extensive collection of UI components and engineering reference implementations of common 2D/3D graphics algorithms for fast prototyping on windows and linux platforms.

Contents

  • Anti-aliased 2D graphics drawing (NanoVG).
  • Truetype fonts (stb_truetype).
  • OpenGL core 3.3 and higher support. Legacy OpenGL will not run, but you won't need it!
  • Generic handling of absolute/relative coordinates in pixels, dp, in, and mm.
  • Tweenable positions, dimensions, font sizes, and colors.
  • UI components: Region, Composite, Border Layout, Vertical Layout, Horizontal Layout, Scroll Bars, Draw 2D Region, Text Button, Icon Button, Text Icon Button, Text Field, Selection Box, Drop Down Box, Menu Bar, Vertical Slider, Horizontal Slider, Color Selection, File Dialog, File Field, File Button, List Box, Window Pane, Graph Plot, Progress Bar, Expand Region, Toggle Box, Check Box, Glass Pane.
  • Worker, timer, and recurrent worker.
  • Vector types from one to four dimensions.
  • Quaternions.
  • Color space support for RGBA, HSV, CieLAB, XYZ, Gray, and look-up tables.
  • Sparse Matrix, Dense Matrix, Dense Vector, Array, Image, and Volume data structures.
  • Data structure serialization to json, binary, and xml (cereal).
  • Image IO (stb_image and tinyexr) for PNG, JPEG, TIFF, HDR, PSD, BMP, GIF, PNM, PIC, TGA, EXR, and XML (Mipav's encoding).
  • Mesh IO for PLY and OBJ (tinyobj).
  • Dense and sparse matrix solvers including SVD, QR, LU, CG, and BiCGstab.
  • The "Any" class to enable methods with arbitrary left-hand return types.
  • Perspective and orthographic cameras with methods to transform from world to screen or vice versa.
  • "Awesome font" icons.
  • Window screenshot (F11).
  • Arbitrary mouse cursors.
  • Common shaders for deferred rendering in OpenGL 3.3 and higher.
  • Distance Field 2D/3D (fast-marching method).
  • Delaunay Triangulation.
  • Point Kd-Tree 2D/3D (libkdtree).
  • Approximate Nearest Neighbors in N-dimensions (nanoflann).
  • Mesh Kd-Tree (ray-intersection and closest point).
  • SHA1, SHA-256, SHA-384, SHA-512.
  • Cross-Platform file system IO.
  • NURB curves, B-Splines, and Beziers (tinyspline).
  • Catmull-Clark and Loop mesh sub-division.
  • Mesh primitives for box, icosahedron, sphere, cylinder, torus, plane, cone, pyramid, frustum, capsule, tessellated sphere, grid, and asteroid.

Future Work

  • Message pop-ups, number field.
  • Active contour segmentation
  • Iso-contour / Iso-surface
  • Visual programming UI
  • Image processing for anisotropic image diffusion, Mumford-Shah, Rudin-Osher-Fatemi, Chan-Esedolgu-Nikolova
  • Automatic UV generation (OpenNL)
  • 2D fluids (Stam's stable fluid simulator)
  • Progressive Meshes
  • Gradient Vector Flow
  • KAZE features
  • DAISY features
  • Spring Level Sets
  • Force directed graph and other visualizations (Prefuse)
  • "One Euro" filter
  • 2D physics (box2D)

Dependencies

GLFW 3.1+ and GLEW. Source code for all other libraries is included in the repository and compiles on windows and linux (unsure about mac, buy me a mac and I'll make sure it works ^_^).

License

Alloy is BSD licensed and only uses libraries that also have a permissive license for commercial and academic use.

Absolute/Relative Positioning Example

UnitsEx

Composite Example

CompisteEx

Events Example

EventsEx

Drag and Drop Example

DragEx

Tween Animation Example

TweenEx

Image Example

ImageEx

Controls Example

ControlsEx

Dialog Example

DialogEx

Expand Bar Example

ExpandEx

Mesh with Matcap Shading Example

MeshMatcapEx

Mesh Wireframe Example

MeshWireframeEx

Mesh Subdivision Example

MeshSubdivideEx

Mesh Texture Example

MeshTextureEx

Mesh with Per Vertex Color Example

MeshVertexColorEx

Particles Example

MeshParticleEx

Mesh Depth / Normals / Distances Example

MeshDepthEx

Mesh Phong Shading Example

MeshPhongEx

Laplace Fill Example

LaplaceFillEx

Poisson Blend Example

PoissonBlendEx

Poisson Fill Example

PoissonInpaintEx

Image Filter Example

ImageProcessingEx

Object/Face Picker Example

MeshPickerEx

Mesh Ray Intersection Example

IntersectorEx

Mesh Smoothing Example

MeshSmoothEx

Color Space Example

ColorSpaceEx

Mesh Primitives Example

MeshPrimitivesEx

Menu System Example

MenuEx

Point Locator Example

LocatorEx

Graph Example

GraphEx

Window Pane Example

WindowPaneEx

B-Spline Example

SplineEx

Distance Field Example

DistanceFieldEx

About

Yet another 2D/3D graphics library written in C++11

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages