Goedemiddag!

De laatste paar dagen ben ik mij aan het verdiepen in WebGL gezien ik altijd al geïnteresseerd ben geweest in 3D. Ik heb mezelf er dit keer dan ook toe gezet hier echt eens iets mee te gaan doen. Op dit moment ben ik dus vooral veel tutorials aan het doorlezen en de meeste onderdelen snap ik, maar er is 1 ding dat ik niet helemaal begrijp.

Op de volgende pagina is te zien dat er op een gegeven moment een vertex shader wordt aangemaakt:

http://www.tutorialspoint.com/webgl/webgl_cube_rotation.htm

var vertCode = 'attribute vec3 position;'+
            'uniform mat4 Pmatrix;'+
            'uniform mat4 Vmatrix;'+
            'uniform mat4 Mmatrix;'+
            'attribute vec3 color;'+//the color of the point
            'varying vec3 vColor;'+
			
            'void main(void) { '+//pre-built function
               'gl_Position = Pmatrix*Vmatrix*Mmatrix*vec4(position, 1.);'+
               'vColor = color;'+
            '}';


Hierin staan 2 attributen: position en color, verderop is het volgende te zien:

gl.bindBuffer(gl.ARRAY_BUFFER, vertex_buffer);
var position = gl.getAttribLocation(shaderProgram, "position");
gl.vertexAttribPointer(position, 3, gl.FLOAT, false,0,0) ;
gl.enableVertexAttribArray(position);

gl.bindBuffer(gl.ARRAY_BUFFER, color_buffer);
var color = gl.getAttribLocation(shaderProgram, "color");
gl.vertexAttribPointer(color, 3, gl.FLOAT, false,0,0) ;
gl.enableVertexAttribArray(color);


Wat ik niet snap is waar position en color hun waarde vandaan krijgen. Zou iemand, die hier wat meer verstand van heeft dan ik, me dit kunnen uitleggen?

Alvast bedankt!
Wild guess: via shaderProgram? Is getAttribLocation een soort van methode om een (callback)functie aan te roepen? shaderProgram klinkt als een stuk functionaliteit die "shader" handelingen verricht.

Waarschijnlijk een kwestie van het kruimelpad volgen:
- wat doet getAttribLocation precies?
- wat is shaderProgram
Sorry voor de late reactie en bedankt voor je antwoord!

De ShaderProgram koppelt (volgens mij) de vertex shader en de fragment shader aan de huidige WebGL. Ik heb er zelf ook nog een poos naar gekeken en volgens mij geeft .bindBuffer aan in welke buffer de opvolgende functies worden aangeroepen. Ik denk dus dat de shaders hun informatie uit vertex_buffer en color_buffer komen.

Alsnog bedankt voor je hulp!

Reageren