GlslProg

A shader - a.k.a. GLSL program.

Namespace Include
gl::GlslProg #include "cinder/gl/GlslProg.h"




Description

Shaders can either be created via convenience functions gl::getStockShader(), written via gl::GlslProg::Format or loaded from disk via loadAsset()




Example

image

#include "cinder/app/App.h"
#include "cinder/app/RendererGl.h"
#include "cinder/gl/gl.h"
#include "cinder/gl/GlslProg.h"

using namespace ci;
using namespace ci::app;

class MyApp : public App {
  public:
    void    setup() override;
    void    draw() override;

    CameraPersp         mCam;
    gl::BatchRef        mCube;
    gl::GlslProgRef     mGlsl;
};

void MyApp::setup()
{
    mCam.lookAt(vec3(3, 2, 4), vec3(0));

    mGlsl = gl::GlslProg::create(gl::GlslProg::Format()
    .vertex(CI_GLSL(150,
        uniform mat4    ciModelViewProjection;
        in vec4         ciPosition;

        void main(void) {
            gl_Position = ciModelViewProjection * ciPosition;
        }
    ))
    .fragment(CI_GLSL(150,
        out vec4            oColor;

        void main(void) {
            oColor = vec4(1, 0.5, 0.25, 1);
        }
    )));

    mCube = gl::Batch::create(geom::Cube(), mGlsl);

    gl::enableDepthWrite();
    gl::enableDepthRead();
}

void MyApp::draw()
{
    gl::clear(Color(0.2f, 0.2f, 0.2f));
    gl::setMatrices(mCam);
    mCube->draw();
}

CINDER_APP(MyApp, RendererGl)