Using Cocos3D shaders, and making and implementing your own A-Z

There’s a good tutorial here on using shaders with Cocos2D but none for 3D. Trying to extract and interpret for Cocos3D is actually daunting and I’m not sure if i’m ever on the right track. Is there a tutorial that includes using /changing 3D shaders but it’s not in the title? Or any place to get the info?

Oh and here’s what I got:

 [self selectShaders];
    
    CC3ShaderProgramSemanticsByVarName* sd = [CC3ShaderProgramSemanticsByVarName new];
    [sd populateWithDefaultVariableNameMappings];
    _mySemanticDelegate = sd;
    
    CC3ShaderProgram *shaderProg = [CC3ShaderProgram programWithSemanticDelegate: _mySemanticDelegate
                                                           fromVertexShaderFile: @"MyVertexShader.vsh"
                                                          andFragmentShaderFile: @"MyFragmentShader.fsh"];

    playArea.shaderProgram = shaderProg;
    [self createBoundingVolumes];
    [self createGLBuffers];
    [self releaseRedundantContent];
    
    [self startGame];

and my shaders are straight forward:

//1
#ifdef GL_ES
precision mediump float;
#endif

//2
varying vec2 v_texCoord;
//3
uniform sampler2D u_texture;

void main()
{
    //4
    gl_FragColor =  texture2D(u_texture, v_texCoord);
}

and

//1
attribute vec4 a_position;
attribute vec2 a_texCoord;

//2
uniform mat4 u_MVPMatrix;

//3
#ifdef GL_ES
varying mediump vec2 v_texCoord;
#else
varying vec2 v_texCoord;
#endif

//4
void main()
{
    //5
    gl_Position = u_MVPMatrix * a_position;
    //6
    v_texCoord = a_texCoord;
}

So I’m wondering where do I bind the attributes?