Advertisement
Guest User

Untitled

a guest
Oct 25th, 2014
126
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.04 KB | None | 0 0
  1.  
  2. var main=function() {
  3. var CANVAS=document.getElementById("your_canvas");
  4. CANVAS.width=window.innerWidth;
  5. CANVAS.height=window.innerHeight;
  6.  
  7. /*========================= GET WEBGL CONTEXT ========================= */
  8. try {
  9. var GL = CANVAS.getContext("experimental-webgl", {antialias: true});
  10. } catch (e) {
  11. alert("You are not webgl compatible :(") ;
  12. return false;
  13. } ;
  14.  
  15. /*========================= SHADERS ========================= */
  16.  
  17. var shader_vertex_source="\n\
  18. attribute vec3 position;\n\
  19. uniform mat4 Pmatrix;\n\
  20. uniform mat4 Vmatrix;\n\
  21. uniform mat4 Mmatrix;\n\
  22. attribute vec3 color; //the color of the point\n\
  23. varying vec3 vColor;\n\
  24. void main(void) { //pre-built function\n\
  25. gl_Position = Pmatrix*Vmatrix*Mmatrix*vec4(position, 1.);\n\
  26. vColor=color;\n\
  27. }";
  28.  
  29. var shader_fragment_source="\n\
  30. precision mediump float;\n\
  31. varying vec3 vColor;\n\
  32. void main(void) {\n\
  33. gl_FragColor = vec4(vColor, 1.);\n\
  34. }";
  35.  
  36. var get_shader=function(source, type, typeString) {
  37. var shader = GL.createShader(type);
  38. GL.shaderSource(shader, source);
  39. GL.compileShader(shader);
  40. if (!GL.getShaderParameter(shader, GL.COMPILE_STATUS)) {
  41. alert("ERROR IN "+typeString+ " SHADER : " + GL.getShaderInfoLog(shader));
  42. return false;
  43. }
  44. return shader;
  45. };
  46.  
  47. var shader_vertex=get_shader(shader_vertex_source, GL.VERTEX_SHADER, "VERTEX");
  48. var shader_fragment=get_shader(shader_fragment_source, GL.FRAGMENT_SHADER, "FRAGMENT");
  49.  
  50. var SHADER_PROGRAM=GL.createProgram();
  51. GL.attachShader(SHADER_PROGRAM, shader_vertex);
  52. GL.attachShader(SHADER_PROGRAM, shader_fragment);
  53.  
  54. GL.linkProgram(SHADER_PROGRAM);
  55.  
  56. var _Pmatrix = GL.getUniformLocation(SHADER_PROGRAM, "Pmatrix");
  57. var _Vmatrix = GL.getUniformLocation(SHADER_PROGRAM, "Vmatrix");
  58. var _Mmatrix = GL.getUniformLocation(SHADER_PROGRAM, "Mmatrix");
  59.  
  60. var _color = GL.getAttribLocation(SHADER_PROGRAM, "color");
  61. var _position = GL.getAttribLocation(SHADER_PROGRAM, "position");
  62.  
  63. GL.enableVertexAttribArray(_color);
  64. GL.enableVertexAttribArray(_position);
  65.  
  66. GL.useProgram(SHADER_PROGRAM);
  67.  
  68. /*========================= THE TRIANGLE ========================= */
  69. //POINTS :
  70. var triangle_vertex=[
  71. -1,-1,0,
  72. 0,0,1,
  73.  
  74. 1,-1,0,
  75. 1,1,0,
  76.  
  77. 1,1,0,
  78. 1,0,0,
  79.  
  80. 1,1,0,
  81. 0,1,0
  82. ];
  83.  
  84. var TRIANGLE_VERTEX= GL.createBuffer ();
  85. GL.bindBuffer(GL.ARRAY_BUFFER, TRIANGLE_VERTEX);
  86. GL.bufferData(GL.ARRAY_BUFFER,
  87. new Float32Array(triangle_vertex),
  88. GL.STATIC_DRAW);
  89.  
  90. //FACES :
  91. var triangle_faces = [0,1,2];
  92. var TRIANGLE_FACES= GL.createBuffer ();
  93. GL.bindBuffer(GL.ELEMENT_ARRAY_BUFFER, TRIANGLE_FACES);
  94. GL.bufferData(GL.ELEMENT_ARRAY_BUFFER,
  95. new Uint16Array(triangle_faces),
  96. GL.STATIC_DRAW);
  97.  
  98. /*========================= MATRIX ========================= */
  99.  
  100. var PROJMATRIX=LIBS.get_projection(40, CANVAS.width/CANVAS.height, 1, 100);
  101. var MOVEMATRIX=LIBS.get_I4();
  102. var VIEWMATRIX=LIBS.get_I4();
  103.  
  104.  
  105.  
  106. LIBS.translateZ(VIEWMATRIX, -5);
  107.  
  108. /*========================= DRAWING ========================= */
  109. GL.clearColor(0.0, 0.0, 0.0, 0.0);
  110.  
  111. GL.enable(GL.DEPTH_TEST);
  112. GL.depthFunc(GL.LEQUAL);
  113.  
  114. GL.clearDepth(1.0);
  115. var time_old=0;
  116. var animate=function(time) {
  117. var dAngle=0.005*(time-time_old);
  118. LIBS.rotateY(MOVEMATRIX, dAngle);
  119. time_old=time;
  120.  
  121. GL.viewport(0.0, 0.0, CANVAS.width, CANVAS.height);
  122. GL.clear(GL.COLOR_BUFFER_BIT | GL.DEPTH_BUFFER_BIT);
  123. GL.uniformMatrix4fv(_Pmatrix, false, PROJMATRIX);
  124. GL.uniformMatrix4fv(_Vmatrix, false, VIEWMATRIX);
  125. GL.uniformMatrix4fv(_Mmatrix, false, MOVEMATRIX);
  126. GL.vertexAttribPointer(_position, 3, GL.FLOAT, false,4*(3+3),0) ;
  127. GL.vertexAttribPointer(_color, 3, GL.FLOAT, false,4*(3+3),3*4) ;
  128. GL.bindBuffer(GL.ARRAY_BUFFER, TRIANGLE_VERTEX);
  129. GL.bindBuffer(GL.ELEMENT_ARRAY_BUFFER, TRIANGLE_FACES);
  130. GL.drawArrays(GL.TRIANGLE_FAN, 0, 4);
  131.  
  132. GL.flush();
  133.  
  134. window.requestAnimationFrame(animate);
  135. }
  136. animate(0);
  137. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement