globjects | C++ library strictly wrapping OpenGL objects | Game Engine library

 by   cginternals C++ Version: v1.0.0 License: MIT

kandi X-RAY | globjects Summary

kandi X-RAY | globjects Summary

globjects is a C++ library typically used in Gaming, Game Engine applications. globjects has no bugs, it has no vulnerabilities, it has a Permissive License and it has low support. You can download it from GitHub.

globjects is a cross-platform C++ wrapper for OpenGL API objects. globjects provides object-oriented interfaces to the OpenGL API (3.0 and higher). It reduces the amount of OpenGL code required for rendering and facilitates coherent OpenGL use by means of an additional abstraction layer to glbinding and GLM. Common rendering tasks and processes are automated and missing features of specific OpenGL drivers are partially simulated or even emulated at run-time.
Support
    Quality
      Security
        License
          Reuse

            kandi-support Support

              globjects has a low active ecosystem.
              It has 507 star(s) with 60 fork(s). There are 35 watchers for this library.
              OutlinedDot
              It had no major release in the last 12 months.
              There are 29 open issues and 246 have been closed. On average issues are closed in 555 days. There are 2 open pull requests and 0 closed requests.
              It has a neutral sentiment in the developer community.
              The latest version of globjects is v1.0.0

            kandi-Quality Quality

              globjects has 0 bugs and 0 code smells.

            kandi-Security Security

              globjects has no vulnerabilities reported, and its dependent libraries have no vulnerabilities reported.
              globjects code analysis shows 0 unresolved vulnerabilities.
              There are 0 security hotspots that need review.

            kandi-License License

              globjects is licensed under the MIT License. This license is Permissive.
              Permissive licenses have the least restrictions, and you can use them in most projects.

            kandi-Reuse Reuse

              globjects releases are available to install and integrate.
              Installation instructions, examples and code snippets are available.
              It has 7905 lines of code, 623 functions and 43 files.
              It has high code complexity. Code complexity directly impacts maintainability of the code.

            Top functions reviewed by kandi - BETA

            kandi's functional review helps you automatically verify the functionalities of the libraries and avoid rework.
            Currently covering the most popular Java, JavaScript and Python libraries. See a Sample of globjects
            Get all kandi verified functions for this library.

            globjects Key Features

            No Key Features are available at this moment for globjects.

            globjects Examples and Code Snippets

            No Code Snippets are available at this moment for globjects.

            Community Discussions

            Trending Discussions on globjects

            QUESTION

            OpenGL shadow mapping weirdness
            Asked 2021-Jun-26 at 14:36

            I have been playing around with OpenGL and shaders and got myself into shadow mapping.

            Trying to follow tutorials on the Internet (ogldev and learnopengl), got some unexpected results.

            The issue is best described with few screenshots (I have added a static quad with depth framebuffer for debugging):

            Somehow I managed to get shadows to be rendered on a ground quad once, with a static light (this commit). But the shadow pattern is, again, incorrect. I strongly suspect model transformation matrix calculaitons on this:

            The way I render the scene is quite straightforward:

            1. create the pipelines:
            • for mapping the shadows (filling the depth frame buffer)
            • for rendering the scene using the depth frame buffer
            • (extra) debugging one, rendering depth frame buffer to a static quad on a screen
            1. fill the depth frame buffer: using the shadow mapping pipeline, render the scene from the light point, using orthographic projection
            2. render the shaded scene: using the rendering pipeline and depth frame buffer bind as the first texture, render the scene from a camera point, using perspective projection

            Seems like the algorithm in all those tutorials on shadow mapping out there. Yet, instead of a mouray effect (like in all of the tutorials), I get no shadow on the bottom plane whatsoever and weird artifacts (incorrect shadow mapping) on the 3D (chicken) model.

            Interestingly enough, if I do not render (for both the shadow mapping and final rendering pass) the chicken model, the plane is lit with the same weird pattern:

            I also had to remove any normal transformations from the fragment shader and disable face culling to make the ground plane lit. With front-face culling the plane does not appear in the shadow map (depth buffer).

            I assume the following might be causing this issue:

            • wrong depth frame buffer setup (data format or texture parameters)
            • flipped depth frame buffer texture
            • wrong shadow calculations in rendering shaders
            • wrong light matrices (view & projection) setup
            • wrong matrix calculations in the rendering shaders (given the model transformation matrices for both chicken model and the quad contain both rotation and scaling)

            Unfortunately, I ran out of ideas even on how to assess the above assumptions.

            Looking for any help on the matter (also feel free to criticize any of my approaches, including C++, CMake, OpenGL and computer graphics).

            The full solution source code is available on GitHub, but for convenience I have placed the heavily cut source code below.

            shadow-mapping.vert:

            ...

            ANSWER

            Answered 2021-Jun-26 at 14:36

            As shameful as it might be, the issue was with the wrong texture being bound.

            The globjects library that I use to have few nice(-r) abstractions over OpenGL actually does not provide a smart logic around texture binding (as I blindly assumed). So using just Texture::bind() and Texture::unbind() won't automagically keep track of how many textures have been bound and increment an index.

            E.g. it does not behave (roughly) like this:

            Source https://stackoverflow.com/questions/68115273

            Community Discussions, Code Snippets contain sources that include Stack Exchange Network

            Vulnerabilities

            No vulnerabilities reported

            Install globjects

            globjects is available for different platforms using different distribution channels. You can either download the source and manually compile it or use one of the pre-compiled releases of this repository. For systems providing package managers, we generally strive for packages in these package managers. The various globjects packages can be installed either by downloading an installer, e.g., the latest x64 installer for Microsoft Visual Studio 2015, or downloading and extracting one of the precompiled archives, e.g. runtime, examples, and dev. Alternatively, download the source code and commence building from source.
            The only mandatory run-time dependencies of globjects are the STL of the used compiler, glbinding, and an OpenGL driver library, dynamically linked with your application. However, compiling globjects requires the following required and optional dependencies:. For compilation, a C++11 compliant compiler, e.g., GCC 4.8, Clang 3.3, MSVC 2013 Update 3, is required.
            CMake 3.0 or higher for building globjects from source (mandatory for any build from source)
            git for version control and script supporting tasks
            glbinding as OpenGL API binding
            GLM for OpenGL math and data structures (0.9.7 or above)
            Eigen3 as alternative to pass vector data to OpenGL (3.3 or above)
            GLFW 3.0 or higher for examples
            cpplocate for the examples
            Qt5 5.0 or higher for the qt-based example
            Doxygen 1.8 or higher for generating the documentation on your system graphviz for generating diagrams (optional)

            Support

            For any new features, suggestions and bugs create an issue on GitHub. If you have any questions check and ask questions on community page Stack Overflow .
            Find more information at:

            Find, review, and download reusable Libraries, Code Snippets, Cloud APIs from over 650 million Knowledge Items

            Find more libraries

            Stay Updated

            Subscribe to our newsletter for trending solutions and developer bootcamps

            Agree to Sign up and Terms & Conditions

            Share this Page

            share link

            Explore Related Topics

            Consider Popular Game Engine Libraries

            godot

            by godotengine

            phaser

            by photonstorm

            libgdx

            by libgdx

            aseprite

            by aseprite

            Babylon.js

            by BabylonJS

            Try Top Libraries by cginternals

            glbinding

            by cginternalsC++

            cmake-init

            by cginternalsC++

            cppfs

            by cginternalsC++

            webgl-operate

            by cginternalsTypeScript

            glraw

            by cginternalsC++