Example #1
0
void CreateTailorScene()
{
    // Load shaders
    try
    {
        ref_ptr<Shader> tailorShader( CreateShaderFromFile(device, Shader::FRAGMENT, "data/Shaders/tailor.frag" ASSET_MANAGER) );
        if (!tailorShader) {
            throw std::runtime_error("Shader file not loaded");
        }

        tailorProgram.reset( device->CreateProgram() );
        tailorProgram->AddShader( transformShader.get() );
        tailorProgram->AddShader( tailorShader.get() );
        if ( SGL_OK != tailorProgram->Dirty() ) {
            throw std::runtime_error("Shader program not compiled");
        }

        tailorUniformMVP     = tailorProgram->GetUniform4x4F("modelViewProjectionMatrix");
        tailorColorUniform   = tailorProgram->GetUniform4F("color");
        tailorUniformA       = tailorProgram->GetUniformF("a");
        tailorUniformB       = tailorProgram->GetUniformF("b");
        tailorUniformC       = tailorProgram->GetUniformF("c");
        tailorUniformDensity = tailorProgram->GetUniformF("density");
        assert( tailorUniformA );
        assert( tailorUniformB );
        assert( tailorUniformC );
        assert( tailorUniformDensity );

        int posLoc = tailorProgram->AttributeLocation("vp_position");
        VertexLayout::ELEMENT elements[] =
        {
            {posLoc, 2, 0, 8, FLOAT, VertexLayout::ATTRIBUTE},
        };
        vertexLayout.reset( device->CreateVertexLayout(1, elements) );

        //tailorUniformA->SetValue(-0.7);
        //tailorUniformB->SetValue(0.5);
    }
    catch(std::runtime_error& err)
    {
        LOGE(err.what());
    }
}