Visualization Library is a C++ middleware for high-performance 2D and 3D graphics applications based on OpenGL 1.x-4.x supporting Windows, Linux and Mac OS X.

Overview

Visualization Library 2.2

Gallery

About

Visualization Library is a C++ middleware for high-performance 2D and 3D graphics applications based on the industry standard OpenGL 1.x-4.x, designed to develop portable applications for the Windows, Linux and Mac OS X operating systems.

Compilation and Installation

Windows via CLI

Example to build and install a Debug build of VL and run the vlQt5_tests.exe glsl test:

cd C:\
git clone [email protected]:MicBosi/VisualizationLibrary.git
cd VisualizationLibrary
mkdir _BUILD
mkdir _INSTALL
cd _BUILD
cmake .. -G "Visual Studio 16 2019" -DVL_GUI_WIN32_SUPPORT=ON -DVL_GUI_WIN32_EXAMPLES=ON -DVL_GUI_QT5_SUPPORT=ON -DVL_GUI_QT5_EXAMPLES=ON -DVL_INSTALL_DATA=ON -DVL_BUILD_DOCS=ON -DCMAKE_INSTALL_PREFIX='C:\VisualizationLibrary\_INSTALL\'
cmake --build . --config Debug --target INSTALL
cmake --build . --config Debug --target Docs
set PATH=C:\VisualizationLibrary\_INSTALL\bin;%PATH%
set VL_DATA_PATH=C:\VisualizationLibrary\_INSTALL\data
vlQt5_tests.exe glsl
cat log.txt

Use make --build . --config Release --target INSTALL to build and install in Release mode.

Linux via CLI

Something similar to this should work (uses QT5 gui bindings as an example, requires Qt5 dev to be installed):

cd ~
git clone [email protected]:MicBosi/VisualizationLibrary.git
cd VisualizationLibrary
mkdir _BUILD/Debug _BUILD/Release -p
mkdir _INSTALL

# Debug build
cd _BUILD/Debug
cmake ../.. -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Debug -DVL_GUI_QT5_SUPPORT=ON -DVL_GUI_QT5_EXAMPLES=ON -DVL_INSTALL_DATA=ON -DVL_BUILD_DOCS=ON -DCMAKE_INSTALL_PREFIX=~/VisualizationLibrary/_INSTALL
make -j 4
make install
make Docs
vlQt5_tests glsl
cat log.txt

# Release build
cd ../..
cd _BUILD/Release
cmake ../.. -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Release -DVL_GUI_QT5_SUPPORT=ON -DVL_GUI_QT5_EXAMPLES=ON -DVL_INSTALL_DATA=ON -DVL_BUILD_DOCS=ON -DCMAKE_INSTALL_PREFIX=~/VisualizationLibrary/_INSTALL
make -j 4
make install
export PATH=~/VisualizationLibrary/_INSTALL/bin:$PATH
export VL_DATA_PATH=~/VisualizationLibrary/_INSTALL/data
vlQt5_tests glsl
cat log.txt

Windows, Linux, Mac via GUI

Follow the instructions here: http://visualizationlibrary.org/docs/2.0/html/pag_install.html

Licensing

Visualization Library is released under the OSI approved Simplified BSD License (LICENSE.md).

Resources

Happy coding :)

Issues
  • Qt4, wxWidget, MFC gui bindings should use aggregation instead of inheritance.

    Qt4, wxWidget, MFC gui bindings should use aggregation instead of inheritance.

    The gui specific window class should cooperate with a gui specific 
    OpenGLContext subclass and hot having the latter inherit from the former.
    

    Original issue reported on code.google.com by [email protected] on 1 Mar 2011 at 7:41

    auto-migrated Type-Enhancement Priority-Critical Architecture 
    opened by GoogleCodeExporter 10
  • Add GLFW support

    Add GLFW support

    It would be great to have a vlGLFW::GLFWWindow helper class. Ideally, it should support multiple windows (with the possibility to share contexts) and OpenGL Core Profile, though it would be good to get any GLFW support as a start...

    opened by totalgee 8
  • New View + SceneView + Rendering implementation

    New View + SceneView + Rendering implementation

    Proposed architecture:
    
    View: (data only)
      + Camera 
      + Viewport
    
    SceneView: (data only)
      + View
      + SceneManagers[]
      + Renderers[] <-- viewport clear
    
    Rendering: (executes the rendering on the given SceneViews)
      + SceneViews[]
      > all renderers must use the same OpenGLContext so we don't need to clear GL states and makeCurrent() only once. Contract check made in debug mode at the very beginning.
    
     - Cons: 
       - introduces an extra layer of indirection.
    
     - Pro: 
       - can more easily add new scene/camera/renderers combinations.
       - minimize init/clearup of OpenGLContext states and makeCurrent() calls.
       - minimize need to resort to RenderingTree class.
    

    Original issue reported on code.google.com by [email protected] on 2 Mar 2011 at 1:18

    auto-migrated Type-Enhancement Priority-Critical Architecture Easy 
    opened by GoogleCodeExporter 7
  • Implement DrawCall demo-test

    Implement DrawCall demo-test

    Implement DrawCall Test utilizing all the draw call types and features.
    

    Original issue reported on code.google.com by [email protected] on 1 Mar 2011 at 9:54

    Type-Defect auto-migrated Priority-Critical Milestone-CurDev Validation 
    opened by GoogleCodeExporter 7
  • Lower level classes directly usable, FBO*, GLSL*, Shader, Geometry, OpenGLContext, RenderTarget, Camera, scene managers etc.

    Lower level classes directly usable, FBO*, GLSL*, Shader, Geometry, OpenGLContext, RenderTarget, Camera, scene managers etc.

    Add example showing how to use lower level classes directly such as Shader, 
    Geometry, OpenGLContext, RenderTarget, Camera, scene managers, GLSL classes 
    etc. possibly using GLUT.
    

    Original issue reported on code.google.com by [email protected] on 1 Mar 2011 at 7:47

    auto-migrated Type-Enhancement Priority-Critical Architecture 
    opened by GoogleCodeExporter 7
  • Make OpenGLContext usable without GUI bindings.

    Make OpenGLContext usable without GUI bindings.

    Add an example showing how to use and OpenGLContext without GUI bindings, 
    possibly using GLUT.
    

    Original issue reported on code.google.com by [email protected] on 1 Mar 2011 at 7:45

    auto-migrated Type-Enhancement Priority-Critical Architecture 
    opened by GoogleCodeExporter 7
  • Incomplete or Deprecated?

    Incomplete or Deprecated?

    Object Serialization

    VL really needs to be able to serialize/deserialize its classes and data however the current system is quite labor intensive to maintain and we should at least investigate other possibilities. In any case serialization is poorly documented. We should at least ensure a definite subset of VL classes are properly serialized and well documented and allow the user to add de/serialization capability to custom classes. We might also switch to JSON/BSON rather than our current custom language. It might be more verbose but it would allow better interoperability. We can explicitly declare the data type in JSON by the use of standard suffixes like vertices__f32_ etc. However BSON is only an option if we can store large ints and doubles losslessly and also binary blobs.

    OpenGL ES

    Support for OpenGL ES does not seem to be a priority, we may deprecate and drop altogether its support which is broken anyway, unless someone else helps with its implementation and maintenance.

    Fixed Function Pipeline

    For the future I'm getting more and more convinced that we should drop pre OpenGL 3.2 compatibility and only focus on OpenGL 3.2 onward core compatibility.

    opened by MicBosi 6
  • Support Qt5

    Support Qt5

    Looks like most users use VL via Qt so as part of the current refocusing effort VL will update support to the latest GUI back ends but pay special attention to Qt5 as its primary GUI.

    Priority-High 
    opened by MicBosi 6
  • MiniEarth demo-test finalization

    MiniEarth demo-test finalization

    Wishlist:
    - Various textures.
    - Earth and moon bump-mapping.
    - Atmosphere.
    - Vertex displacement exaggeration.
    - Basic vector data: country borders and major city centers.
    
    
    

    Original issue reported on code.google.com by [email protected] on 2 Mar 2011 at 12:24

    auto-migrated Type-Enhancement Priority-High 
    opened by GoogleCodeExporter 6
  • OpenGLContext should take ownership of the vl::Rendering logic that manages the render states.

    OpenGLContext should take ownership of the vl::Rendering logic that manages the render states.

    OpenGLContext should take ownership of the vl::Rendering logic that manages the 
    render states.
    
    OpenGLContext should be usable by itself and should be autonomously capable of 
    performing lazy setup of all render states in particular:
    
    - Modelview, Normal & Projection matrices setup. Including GLSL/non-GLSL 
    pipeline abstraction.
    - Uniform update.
    - Color, SecondaryColor, Normal, Fog
    
    OpenGLContext should have a beginRendering() and a endRendering() methods 
    between which the OpenGL context state is kept safe and delta-setup can be made.
    

    Original issue reported on code.google.com by [email protected] on 1 Mar 2011 at 10:26

    auto-migrated Type-Enhancement Priority-Critical Architecture 
    opened by GoogleCodeExporter 6
  • vl::Geometry color, secondary color and normal render states optimization

    vl::Geometry color, secondary color and normal render states optimization

    vl::Geometry color, secondary color and normal render states should be updated 
    lazily, and such update should be delegated to the current OpenGLContext which 
    keeps track of the current color, sec color and normal.
    
    1% speedup has been observed in preliminary tests in doing this.
    

    Original issue reported on code.google.com by [email protected] on 1 Mar 2011 at 7:43

    auto-migrated Type-Enhancement Priority-Critical Architecture Milestone-CurDev 
    opened by GoogleCodeExporter 6
  • make error: implicit declaration of function 'lseek'

    make error: implicit declaration of function 'lseek'

    Env: MacOS11, Xcode13

    CC # make
    [  1%] Building C object src/vlCore/plugins/zlib/CMakeFiles/ZLib.dir/__/__/__/external/zlib/adler32.c.o
    [  1%] Building C object src/vlCore/plugins/zlib/CMakeFiles/ZLib.dir/__/__/__/external/zlib/compress.c.o
    [  1%] Building C object src/vlCore/plugins/zlib/CMakeFiles/ZLib.dir/__/__/__/external/zlib/crc32.c.o
    [  2%] Building C object src/vlCore/plugins/zlib/CMakeFiles/ZLib.dir/__/__/__/external/zlib/deflate.c.o
    [  2%] Building C object src/vlCore/plugins/zlib/CMakeFiles/ZLib.dir/__/__/__/external/zlib/gzclose.c.o
    [  2%] Building C object src/vlCore/plugins/zlib/CMakeFiles/ZLib.dir/__/__/__/external/zlib/gzlib.c.o
    /Users/cc/Downloads/VisualizationLibrary-master/src/external/zlib/gzlib.c:256:24: error: implicit declaration of function 'lseek' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
            state->start = LSEEK(state->fd, 0, SEEK_CUR);
                           ^
    /Users/cc/Downloads/VisualizationLibrary-master/src/external/zlib/gzlib.c:14:17: note: expanded from macro 'LSEEK'
    #  define LSEEK lseek
                    ^
    /Users/cc/Downloads/VisualizationLibrary-master/src/external/zlib/gzlib.c:256:24: note: did you mean 'fseek'?
    /Users/cc/Downloads/VisualizationLibrary-master/src/external/zlib/gzlib.c:14:17: note: expanded from macro 'LSEEK'
    #  define LSEEK lseek
                    ^
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.0.sdk/usr/include/stdio.h:162:6: note: 'fseek' declared here
    int      fseek(FILE *, long, int);
             ^
    /Users/cc/Downloads/VisualizationLibrary-master/src/external/zlib/gzlib.c:355:9: error: implicit declaration of function 'lseek' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
        if (LSEEK(state->fd, state->start, SEEK_SET) == -1)
            ^
    /Users/cc/Downloads/VisualizationLibrary-master/src/external/zlib/gzlib.c:14:17: note: expanded from macro 'LSEEK'
    #  define LSEEK lseek
                    ^
    /Users/cc/Downloads/VisualizationLibrary-master/src/external/zlib/gzlib.c:396:15: error: implicit declaration of function 'lseek' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
            ret = LSEEK(state->fd, offset - state->x.have, SEEK_CUR);
                  ^
    /Users/cc/Downloads/VisualizationLibrary-master/src/external/zlib/gzlib.c:14:17: note: expanded from macro 'LSEEK'
    #  define LSEEK lseek
                    ^
    /Users/cc/Downloads/VisualizationLibrary-master/src/external/zlib/gzlib.c:492:14: error: implicit declaration of function 'lseek' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
        offset = LSEEK(state->fd, 0, SEEK_CUR);
                 ^
    /Users/cc/Downloads/VisualizationLibrary-master/src/external/zlib/gzlib.c:14:17: note: expanded from macro 'LSEEK'
    #  define LSEEK lseek
                    ^
    4 errors generated.
    make[2]: *** [src/vlCore/plugins/zlib/CMakeFiles/ZLib.dir/__/__/__/external/zlib/gzlib.c.o] Error 1
    make[1]: *** [src/vlCore/plugins/zlib/CMakeFiles/ZLib.dir/all] Error 2
    make: *** [all] Error 2
    CC # open /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.0.sdk/
    CC #
    
    opened by ccworld1000 0
  • vlVG fix

    vlVG fix

    SceneManagerVectorGraphics.hpp file is invalid without VectorGraphics.hpp

    example usage: //#include <vlVG/VectorGraphics.hpp> // without it don't work - compile error #include <vlVG/SceneManagerVectorGraphics.hpp>

    CE, 86 line: "vectorGraphicObjects()->at(i)->actors()" (VectorGraphics is undefined)

    opened by absentje 0
  • CMake :: Error in configuration process

    CMake :: Error in configuration process

    Hi,

    I try to build with CMake 3.20.1 with VS2019 or VS2015 but boh fail the generation.

    CMake Warning (dev) in CMakeLists.txt: No project() command is present. The top-level CMakeLists.txt file must contain a literal, direct call to the project() command. Add a line of code such as

    project(ProjectName)
    

    near the top of the file, but after cmake_minimum_required().

    CMake is pretending there is a "project(Project)" command on the first line. This warning is for project developers. Use -Wno-dev to suppress it.

    Selecting Windows SDK version to target Windows 10.0.19041. The C compiler identification is MSVC 19.0.24215.1 The CXX compiler identification is MSVC 19.0.24215.1 Detecting C compiler ABI info Detecting C compiler ABI info - done Check for working C compiler: C:/Program Files (x86)/Microsoft Visual Studio 14.0/VC/bin/cl.exe - skipped Detecting C compile features Detecting C compile features - done Detecting CXX compiler ABI info Detecting CXX compiler ABI info - done Check for working CXX compiler: C:/Program Files (x86)/Microsoft Visual Studio 14.0/VC/bin/cl.exe - skipped Detecting CXX compile features Detecting CXX compile features - done CMake Error at vlCore/plugins/CMakeLists.txt:32 (VL_PROCESS_PROJECT_PLUGINS): Unknown CMake command "VL_PROCESS_PROJECT_PLUGINS".

    Configuring incomplete, errors occurred! See also "E:/Library/VisualizationLibrary/2.1.0/build/CMakeFiles/CMakeOutput.log".

    CMakeOutput.log

    opened by dcube9 2
  • OpenGL man links in documentation are all broken

    OpenGL man links in documentation are all broken

    They seem to have moved all the documentation and broke all the links with no redirects!

    Git repo here: https://github.com/KhronosGroup/OpenGL-Refpages


    eg. http://www.opengl.org/sdk/docs/man/xhtml/glLineWidth.xml

    redirects to

    https://www.khronos.org/registry/OpenGL-Refpages/gl4/xhtml/glLineWidth.xml (404 error)

    but is actually in

    https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glLineWidth.xhtml

    opened by MicBosi 0
Releases(v2.1.0)
  • v2.0-b5(Feb 10, 2020)

    • Fixed several warnings, compilation issues and bugs in Linux and VS2019
    • Added new Extrusions class courtesy of Fabien Mathieu to extrude multiple contours, useful for "hollow" extrusions etc.
    Source code(tar.gz)
    Source code(zip)
  • v2.0-b4(Feb 10, 2020)

  • v2.0-b3(Feb 6, 2017)

    • OpenGL Core & Compatibility profiles with min/maj version supported by Qt4, Qt5, GLFW and GLUT.
    • RaycastVolume rewritten to support OpenGL Core (3.3+).
    • More resilient Applet, OpenGLContext and volume examples shutdown and destruction.
    • GLFW support fixes.
    Source code(tar.gz)
    Source code(zip)
  • v2.0-b2(Jan 31, 2017)

    • General documentation & website update
      • Based on Doxygen 1.8
      • Website includes v1.0 and v2.0 docs
      • Allow Markdown docs
      • Several fixed and updates in the docs
    • Use compatibility GL profile by default
    • Qt4,Qt5,GLFW: allow GL profile Core or Compatibility
    • VertexAttribInfo: removed
    • Volume GLSL: improved render quality
    • Added simple MHD loader
    • STL: 10x faster binary loader
    • Added GLFW support
    • Locate GDCM using standard FIND_PACKAGE
    Source code(tar.gz)
    Source code(zip)
  • v2.0-b1(Jan 18, 2017)

    This includes many updates, fixes and experimental architectural improvements.

    Note that there are some API breaking changes highlighted below, however porting should be easy.

    It's mostly an incremental improvement over VL v1.0 at this stage, plus better Qt4/Qt5 support, better OpenGL Core support, more powerful GLSL management in general, more coherent API and various fixes. It has also been battle-tested in a couple of big projects, so as far as I know it's quite stable.

    I haven't been able to accept pull requests and patches so far because I had this major new version in the works for months - hopefully now I'll be able to go through the various feedback I've received and start incorporating the good stuff :)


    OpenGLContext::dispatchRunEvent() renamed dispatchUpdateEvent()


    Added standard GLSL includes uniforms.glsl and vertex_attribs.glsl Using new GLSL #pragma VL include capability #version 150 compatibility is current preferred safe version for many GLSL scripts


    mGLSLProgram->useProgram();

    becomes

    openglContext()->useGLSLProgram( mGLSLProgram.get() );


    Legacy GLSL removed (these are taken care of from inside the GLSL script)

    glsl->setGeometryInputType(GIT_TRIANGLES); glsl->setGeometryOutputType(GOT_TRIANGLE_STRIP); glsl->setGeometryVerticesOut( 3*6 );


    Vertex Attrib Arrays now can be used in 3 ways:

       // bind the tangent vertex attribute - can be done in 3 ways
    #if 1
        // user defines his custom vertex attribute
        mGLSL->linkProgram();
        int tangent_idx = mGLSL->getAttribLocation("VertexTangent"); VL_CHECK( tangent_idx != -1 );
        model->setVertexAttribArray(tangent_idx, tangent.get() ); // GLSL: in vec3 VertexTangent (user declared)
    #elif 0
        // user uses pre-defined aliased utility vertex attribute
        model->setVertexAttribArray( vl::VA_Tangent, tangent.get() ); // GLSL: vl_VertexTangent (decl. /glsl/std/vertex_attribs.glsl)
    #else
        // user uses pre-defined basic vertex attribute
        model->setVertexAttribArray( vl::VA_TexCoord1, tangent.get() ); // GLSL: vl_VertexTexCoord1 (decl. /glsl/std/vertex_attribs.glsl)
    #endif
    

    sceneManager()->extractActors( *intersector.actors() );

    becomes

    sceneManager()->extractVisibleActors( *intersector.actors(), NULL );


    Removed because not needed anymore: (see tessellation shader example, see morphing callback example)

    geom_patch->convertToVertexAttribs(); mGLSL->addAutoAttribLocation( 0, "vl_Position" );


    Added Qt4 & Qt5 GUI and filesystem support

    Now QFile and QDirectories can be used as part of VL virtual file system - including Qt compiled resurces.


    Added CalibratedCamera class for augmented reality applications


    Added AdjacencyExtractor class

    Used to generate PT_LINES_ADJACENCY, PT_LINE_STRIP_ADJACENCY, PT_TRIANGLES_ADJACENCY, PT_TRIANGLE_STRIP_ADJACENCY primitive type for silhouette extraction, geometry slicing and topology manipulation in geometry shaders.


    Updated vlVolume

    • Improved raycast volume rendering quality & fixed bugs.
    • Automatic slice count computation for sliced volume rendering & fixed bugs.
    • vl::genGradientNormals() utility function fixed.

    added vl::Object::setObjectName()


    added vl::String constructor for std::string & std::wstring


    Vector2, Vector3 and Vector4 can be constructed from single scalar.


    Better automatic texture unit management.

    User configurable VL_MAX_TEXTURE_UNITS now removed by internal VL_MAX_TEXTURE_IMAGE_UNITS and VL_MAX_LEGACY_TEXTURE_UNITS constants.


    Fixed warnings in glsl_math.hpp


    Improved Buffer Object documentation in Array.hpp


    Fixed various render states getter/setter constness in Shader.hpp


    TriangleIterator supports PT_TRIANGLES_ADJACENCY primitive type.


    removed Viewport::enableScissorSetup() added Viewport::setScissorEnabled(bool) added bool Viewport::isScissorEnabled() Viewport::mSetupScissor -> mScissorEnabled


    Improved Uniform getters/setters


    Image:

    • added support to IF_RG and
    • new constructor Image(void* buffer_ptr, int buffer_bytes) allowing initializing an Image against a user/externally allocated buffer

    TextureSampler::reset(int index, OpenGLContext* ctx) utility function to set a texture sampler to it's default disabled state.


    Textures: Managed Textures and Destroy on Create.

    Managed Textures: allow user to assign and manage the low level OpenGL handle with vl::Texture Useful when you want to use a single vl::Texture object but change/recreate the underlying OpenGL texture handle at will.

    Destroy on create: calling Texture::createTexture() (or any function that calls this) will automatically destroy any existing texture (not if it's managed).


    GLSL: removed UniformInfo, AttribInfo and AutoAttribLocations

    Because not useful and superseded by new auto vertex attrib system


    GLSL: new #pragma VL include /path/to/file.glsl directive

    You can now include a GLSL file from another GLSL file!


    GLSL: removed deprecated GeometryVerticesOut, GeometryInputType, GeometryOutputType logic

    OpenGL 3+ uses the layout keyword for these.


    GLSL: added GLSLShader and GLSLProgram reload() functions


    GLSLProgram::useProgram() removed, use OpenGLContext::useGLSLProgram()


    GLSL: Automatic vertex attrib location binding:

    vl_VertexPosition vl_VertexNormal vl_VertexColor vl_VertexSecondaryColor vl_VertexFogCoord vl_VertexTexCoord0 vl_VertexTexCoord1 vl_VertexTexCoord2 vl_VertexTexCoord3 vl_VertexTexCoord4 vl_VertexTexCoord5 vl_VertexTexCoord6 vl_VertexTexCoord7 vl_VertexTexCoord8 vl_VertexTexCoord9 vl_VertexTexCoord10


    GLSL: Automatic standard uniform detection:

    vl_WorldMatrix vl_ModelViewMatrix vl_ProjectionMatrix vl_ModelViewProjectionMatrix vl_NormalMatrix


    GLSL: various improvements and fixes.


    Added Renderer::rederRaw() function.

    Makes it easy to create custom Renderer classes.


    Added Enabled attribute to Actor and ActorTree.

    See also the new/updated functions:

    • bool Renderer::isEnabled(const Actor* actor)
    • bool Rendering::isEnabled(const Actor* actor)
    • bool SceneManager::isEnabled(const Actor* actor)
    • SceneManager::extractActors() vs extractVisibleActors()
    • Actor::setEnabled()/isEnabled()
    • ActorTreeAbstract::setEnabled()/isEnabled()
    • ActorTreeAbstract::extractActors() vs extractVisibleActors()

    ActorTree API changes:

    mChildren is now protected and can be accessed in read-only mode using the children() method.

    New/updated methods to manipulate the tree nodes:

    • void addChild(ActorTreeAbstract* node);
    • void addChildOnce(ActorTreeAbstract* node);
    • void setChild(int i, ActorTreeAbstract* node);
    • void eraseChild(int i, int count=1);
    • int findChild(ActorTreeAbstract* node);
    • bool eraseChild(ActorTreeAbstract* node);
    • void eraseChild(int i, int count = 1);
    • void eraseAllChildren();

    Automatic Generalized Vertex Attribute Arrays

    • Unified API to access all vertex attibutes, position, normal, color but also texture coords and the generic vertex attibutes (glVertexAttribPointer).
    • Standard vertex attributes like position, normal and color can be seen both from the legacy API (ex. Geometry::normalArray()) and the generic api (ex. Geometry::vertexAttribArray( vl::VA_Normal )).
    • Geometry::convertToVertexAttribs() removed as it's not needed anymore.
    • Great simplification of lot's of code that can now be agnostic of legacy vs generic vertex attributes usage.

    Geometry::setColorArray() tries to not reallocate the color array.

    It also sets the buffer object dirty.


    Rendering: fixed bug creating a continuous stream of Textures


    Always setup legacy GLSL matrices as well as vl standard matrix uniforms.


    OpenGLContext: much better Core profile support and closer OpenGL state tracking.

    Source code(tar.gz)
    Source code(zip)
  • v1.0.3(Feb 6, 2017)

  • v1.0.1(Jan 25, 2016)

    • Fixed Visual Studio 2015 compile error and warnings.
    • Fixed IO plugin compilation to properly include VL's third party libs.
    • Updated third party libraries.
    Source code(tar.gz)
    Source code(zip)
  • v1.0.0(Jan 24, 2016)

Oxygine is C++ engine and framework for 2D games on iOS, Android, Windows, Linux and Mac

BUILD AND RUN See oxygine-framework/readme/ folder. It has instructions on how to build and run oxygine on different platforms. Wiki available at http

Oxygine 728 Jun 17, 2022
Serial Data Monitor is a multiplatform (Windows, Linux, Mac, ...) tool to interactively receive/edit/monitor data and send commands to an embedded system via the serial bus

See wiki for full documentation Serial Data Monitor Description Serial Data Monitor is a multiplatform (Windows, Linux, Mac, ...) tool to interactivel

monnoliv 4 Oct 29, 2021
Windscribe 2.0 desktop client for Windows, Mac and Linux

Windscribe 2.0 Desktop Application This repo contains the complete source code for the Windscribe 2.0 app. This includes installer, service/helper, ba

Windscribe 284 Jun 20, 2022
Drmemory - Memory Debugger for Windows, Linux, Mac, and Android

Dr. Memory: the memory debugger About Dr. Memory Dr. Memory is a memory monitoring tool capable of identifying memory-related programming errors such

DynamoRIO 2k Jun 23, 2022
Free (libre) font editor for Windows, Mac OS X and GNU+Linux

FontForge FontForge is a free (libre) font editor for Windows, Mac OS X and GNU+Linux. Use it to create, edit and convert fonts in OpenType, TrueType,

null 4.5k Jun 28, 2022
Qt5 "Hello, world!" app for Linux, BSD, Windows, Mac.

hello world in qt5 Contributions in all forms (code, bug reports, community engagement, localization, etc) are warmly welcomed. Development activity I

Jakob Flierl 2 Jan 26, 2022
F Graphics Library (FGL) is a small graphics C++ portable library for LCD displays on embedded systems

F Graphics Library (FGL) Full documentation: fgl.docsforge.com (By Filipe Chagas) F Graphics Library is a C++ library that I created for use in embedd

Filipe Chagas 8 Dec 14, 2021
Make your Pop!_OS (Ubuntu Linux) shortcut key experience more like Mac OS

Meta Mac Enables a Mac OS-like shortcut key experience on Pop!_OS (and most Ubuntu-based Linux distros). Installation Download or git clone this repos

Duane Johnson 12 Jun 28, 2022
An eventing framework for building high performance and high scalability systems in C.

NOTE: THIS PROJECT HAS BEEN DEPRECATED AND IS NO LONGER ACTIVELY MAINTAINED As of 2019-03-08, this project will no longer be maintained and will be ar

Meta Archive 1.7k Jun 15, 2022
A Mac like Control Center for Windows

A Mac like Control Center for Windows.

LoadingName 1 Mar 8, 2022
Fluid Visualization - The code compilation is only tested on Arch Linux x86_64

Fluid Visualization The code compilation is only tested on Arch Linux x86_64, Linux kernel 5.15.13-arch1, with gcc 11.1.0, CMake 3.22.1, Xorg X server

krr 2 Jan 30, 2022
Open Redragon drivers for Linux. Currently only supporting some mice.

OpenDragon Open Redragon drivers for Linux. Currently only supporting some mice. Table of contents Support Installation Building from source Usage Sou

Alexa Ognjanovic 70 May 19, 2022
GraphicsFuzz provides tools for automatically finding and simplifying bugs in graphics drivers, specifically graphics shader compilers.

GraphicsFuzz GraphicsFuzz is a set of tools for testing shader compilers GraphicsFuzz provides tools for automatically finding and simplifying bugs in

Google 499 Jun 22, 2022
CSC404: Computer Graphics [CG] & CSL402: Computer Graphics Lab [CG Lab]

COMPUTER-GRAPHICS-AND-COMPUTER-GRAPHICS-LAB CSC404: CG & CSL402: CG LAB [SEMESTER IV] Syllabus CG - Reference Books THE WALL MEGA SATISH - AUTHOR CG C

AMEY THAKUR 7 Apr 28, 2022
Emergency alert and tracer for realtime high-performance computing app (work in progress, currently supported env is only Linux x86-64).

HPC Emerg Emergency alert and tracer for realtime high-performance computing app (work in progress, currently supported env is only Linux x86-64). Exa

Ammar Faizi 7 Jan 19, 2022
Rewritten version of the MiniLibX graphics API used by 42, using glfw & glad. Running on OpenGL.

Written by W2.Wizard for the 42 Network A recreation of the MiniLibX library used by 42, using GLFW & glad, running on OpenGL. The goal of MLX42 is to

Codam 68 Jun 11, 2022
CMake modules for common applications related to computer graphics

cgcmake CMake modules for common applications related to computer graphics Sample Usage Maya Project |-- CMakeLists.txt |-- cgcmake |-- modules

Chad Vernon 112 Jun 23, 2022
Fluid simulation engine for computer graphics applications

Fluid Engine Dev - Jet Jet framework is a fluid simulation engine SDK for computer graphics applications that was created by Doyub Kim as part of the

Doyub Kim 1.4k Jun 27, 2022
Several GX2 test programs to compare it with OpenGL. (With additional GLFW+OpenGL implementation provided)

GX2-Tests Provided are GX2 test programs and samples for comparison with OpenGL and with additional GLFW+OpenGL implementation for test on PC. These s

AboodXD 1 Nov 15, 2021