Book Image

OpenGL ES 3.0 Cookbook

By : Parminder Singh
Book Image

OpenGL ES 3.0 Cookbook

By: Parminder Singh

Overview of this book

<p>"Write once, use anywhere" is truly the power behind OpenGL ES and has made it an embedded industry standard. The library provides cutting-edge, easy-to-use features to build a wide range of applications in the gaming, simulation, augmented-reality, image-processing, and geospatial domains.</p> <p>The book starts by providing you with all the necessary OpenGL ES 3.0 setup guidelines on iOS and Android platforms. You'll go on to master the fundamentals of modern 3D graphics, such as drawing APIs, transformations, buffer objects, the model-view-project analogy, and much more. The book goes on to deal with advanced topics and offers a wide range of recipes on the light shading, real-time rendering techniques with static and procedure textures to create stunning visualizations and runtime effects.</p>
Table of Contents (21 chapters)
OpenGL ES 3.0 Cookbook
Credits
About the Author
Acknowledgments
About the Reviewers
www.PacktPub.com
Preface
Index

Discarding fragments


The OpenGL ES shading language provides an important feature of discarding fragments using the discard keyword; this keyword is used only in the fragment shader to prevent updating the framebuffer. In other words, using this keyword throws away the current fragment and stops execution of the fragment shader. This feature of the OpenGL ES shading language is a simple yet effective feature, which opens up possibilities of producing cross-sectional views of 3D geometries, holes, or perforated surfaces.

Getting ready

This recipe reuses the last recipe; this requires a few changes in the fragment shader to demonstrate discarded fragment capabilities.

How to do it...

Rename the polka shader vertex and the fragment shader file as DiscardFragVertex.glsl and DiscardFragFragment.glsl. Open the fragment shader file and add the highlighted code:

#version 300 es
// Many lines skipped . . . 
layout(location = 0) out vec4 FinalColor;
vec3 GouraudShading( bool frontSide )
{
   // Reuse two...