i.MX8 - Multimedia - GPU - OpenGL

From RidgeRun Developer Connection
< IMX8‎ | Multimedia‎ | GPU
Revision as of 11:17, 20 November 2018 by Jcruz (talk | contribs) (GLES2)
Jump to: navigation, search


NXP Partner Program Registered Vertical.jpg NXP Partner Program Horizontal.jpg
  Index  





OpenGL

OpenGL® is the most widely adopted 2D and 3D graphics API in the industry, bringing thousands of applications to a wide variety of computer platforms. It is window-system and operating-system independent as well as network-transparent. OpenGL enables developers of software for PC, workstation, and supercomputing hardware to create high-performance, visually compelling graphics software applications, in markets such as CAD, content creation, energy, entertainment, game development, manufacturing, medical, and virtual reality. OpenGL exposes all the features of the latest graphics hardware. Refer this page for more information.

OpenGL ES (Embedded Systems)

OpenGL® ES is considered the Standard for Embedded Accelerated 3D Graphics. It is a royalty-free, cross-platform API for rendering advanced 2D and 3D graphics on embedded and mobile systems, including consoles, phones, appliances and vehicles. It consists of a well-defined subset of desktop OpenGL suitable for low-power devices, and provides a flexible and powerful interface between software and graphics acceleration hardware. For more information about the API Versions of OpenGL ES, please refer this page.

Demo Examples

There are some examples on this repository that can be used to check the basics required to understand how to write applications on OpenGL. You can find those examples on the /opt/imx-gpu-sdk/OpenGL directory.

Folder Content

In this demo repository you can find and run examples of applications for OpenGL ES2 (GLES2) and OpenGL ES3 (GLES3).

GLES2

  • Bloom: This is an example of how to create a bloom effect. The idea is not to create the most accurate bloom, but something that is fairly fast to render. Instead of increasing the kernel size to get a good blur the example does a fairly fast approximation by downscaling the original image to multiple smaller render-targets and then blurring these using a relative small kernel and then finally rescaling the result to the original size.
Error creating thumbnail: Unable to save thumbnail to destination
  • Blur: Showcases multiple ways to implement a gaussian blur.
    • One pass blur.
    • Two pass blur The 2D Gaussian filter kernel is separable. This allows us two produce the same output as a one pass algorithm by first applying a X-blur and then a Y-blur.
    • Two pass linear blur Uses the two pass technique and further reduces the bandwidth requirement by taking advantage of the GPU's linear texture filtering which allows us to reduce the needed kernel length to roughly half its length while producing the same output as the full kernel length.
    • Two pass linear scaled blur Uses the two pass linear technique and further reduces the bandwidth requirement by downscaling the 'source image' to 1/4 its size (1/2w x 1/2h) before applying the blur and and then upscaling the blurred image to provide the final image. This works well for large kernel sizes and relatively high sigma's but the downscaling produces visible artifacts with low sigma's.
Error creating thumbnail: Unable to save thumbnail to destination
  • DFGraphicsBasic2D: This example shows how to use the Demo Frameworks 'basic' 2D rendering capabilities that work across all backends. The basic2D interface allows you to render ASCII strings using a system provided font and draw colored points in batches. The functionality in Basic2D is used internally in the framework to render the profiling overlays like the frame rate counter and graphs.
Error creating thumbnail: Unable to save thumbnail to destination
  • DFNativeBatch2D: This example shows how to use the Demo Frameworks NativeBatch implementation to render various graphics elements. The native batch functionality works across various 3D backends and also allows you to use the API native textures for rendering. The native batch is very useful for quickly getting something on the screen which can be useful for prototyping and debugging. It is however not a optimized way of rendering things.
Error creating thumbnail: Unable to save thumbnail to destination
  • DFSimpleUI100:
Error creating thumbnail: Unable to save thumbnail to destination
  • DFSimpleUI101:
Error creating thumbnail: Unable to save thumbnail to destination
  • EightLayerBlend:
  • FractalShader:
  • InputEvents:
  • ModelLoaderBasics:
  • ModelViewer:
  • S01_SimpleTriangle:
  • S02_ColoredTriangle:
  • S03_Transform:
  • S04_Projection:
  • S06_Texturing:
  • S07_EnvironmentMapping:
  • S08_EnvironmentMappingRefraction:
  • S09_VIV_direct_texture:
  • T3DStressTest:
  • VIVDirectTextureMultiSampling:

GLES3

  • Bloom:
  • D1_1_VBOs:
  • D1_2_VAOs:
  • DFGraphicsBasic2D:
  • DFNativeBatch2D:
  • DFSimpleUI100:
  • DFSimpleUI101:
  • E1_1_VBOs:
  • E1_2_VAOs:
  • E2_1_CopyBuffer:
  • E3_0_InstacingSimple:
  • E4_0_PRestart:
  • E6_0_MultipleRenderTargets:
  • E7_0_ParticleSystem:
  • EquirectangularToCubemap:
  • FractalShader:
  • FurShellRendering:
  • GammaCorrection:
  • HDR01_BasicToneMapping:
  • ModelLoaderBasics:
  • ModelViewer:
  • MultipleViewportsFractalShader:
  • ObjectSelection:
  • OpenCL101:
  • OpenCLGaussianFilter:
  • ParticleSystem:
  • S01_SimpleTriangle:
  • S02_ColoredTriangle:
  • S03_Transform:
  • S04_Projection:
  • S06_Texturing:
  • S07_EnvironmentMapping:
  • S08_EnvironmentMappingRefraction:
  • S09_VIV_direct_texture:
  • SRGBFramebuffer:
  • Scissor101:
  • Skybox:
  • SpringBackground:
  • T3DStressTest:
  • TextureCompression:
  • VerletIntegration101:


Previous: Multimedia/GPU Index Next: Multimedia/GPU/OpenCL