2016-10-23 33 views
-1

我試圖畫一個圓圈,而不是一個完整的圓圈(360度),我得到了幾乎完整的圓圈和一個缺失的'切片'。
我錯過了什麼?丟失一圈圓片webgl

下面是代碼:

//init: 
      starsList[i].circlePositionBuffer = gl.createBuffer(); 
      gl.bindBuffer(gl.ARRAY_BUFFER, starsList[i].circlePositionBuffer); 
      vertices = [1,0,1]; 
      for (j = 3; j < 360; j+=3) {   
       vertices[j] = starsList[i].factor * starsList[i].radius * Math.cos(j/180.0 * Math.PI); 
       vertices[j+1] = 0; 
       vertices[j+2] = starsList[i].factor * starsList[i].radius * Math.sin(j/180.0 * Math.PI); 
      } 

      gl.bufferData(gl.ARRAY_BUFFER, new Float32Array(vertices), gl.STATIC_DRAW); 
      starsList[i].circlePositionBuffer.itemSize = 3; 
      starsList[i].circlePositionBuffer.numItems = 120; 

//draw 
      mat4.identity(mvMatrix); 
      mat4.translate(mvMatrix, [x, y, z]); 
      gl.bindBuffer(gl.ARRAY_BUFFER, starsList[i].circlePositionBuffer); 
      gl.vertexAttribPointer(shaderProgram.vertexPositionAttribute, starsList[i].circlePositionBuffer.itemSize, gl.FLOAT, false, 0, 0); 
      setMatrixUniforms(); 
      gl.drawArrays(gl.LINE_LOOP, 0, starsList[i].circlePositionBuffer.numItems); 

更新 - 解決

vertices = [1,0,1]; 

應該是:

vertices = [starsList[i].factor * starsList[i].radius,0,0]; 

回答

1

你永遠不會回到0度(和360度) ,請嘗試更換

for (j = 0; j < 360; j += 3) 

通過

for (j = 0; j <= 360; j += 3) 

您還可以將

j/180.0 * Math.PI 

(j % 360)/180.0 * Math.PI 
+0

其仍然沒有工作.. – arii

+0

嘗試都建議 – arii

+1

你能提供一個MCVE好嗎?會更容易檢查出什麼問題 – Zouch