我有一種算法,可讓用戶輸入數據或函數,然後繪製函數。本質上,它的表面圖just like here。圖表工作正常。但是,我想添加一個映射來添加點對點的黑線,就像示例中一樣。但是,我一直得到以下標準錯誤:GL_INVALID_OPERATION:glDrawElements:嘗試訪問屬性2中的範圍頂點。我知道這個錯誤意味着我想要繪製超出緩衝區範圍的東西,但是我看不到我在做什麼。我已經證實,用於映射的x和y長度的變量實際上是x和y指數的數量。例如,我將重複設置爲76和76,這個網格包含76個條目和76個條目,因此包含5776個點。材料圖錯誤:glDrawElements:嘗試訪問屬性2中的範圍頂點
在這個例子中,他們使用參數幾何,我必須使用標準的THREE.Geometry,因爲我有時需要數據而不是函數。除此之外,我已經遵循了這個例子,但仍然有錯誤。我可能會對紋理重複所需的映射數量感到困惑。我相信他們應該代表X和Y點的數量,也許它應該是別的東西。
這裏就是我把我的網格的方法:
Surface.prototype.setMeshes =function(DataID, callback)
{ var graphMesh={};
var PlotID=this.Format_id;
if (PlotID['Chart_dataobj'][DataID]['type']=="Surface")
{ if (PlotID['Chart_dataobj'][DataID]['sWireFrame']=="Solid")
{
var wireTexture = new THREE.ImageUtils.loadTexture('http://www.cadwolf.com/Images/square.png');
wireTexture.wrapS = wireTexture.wrapT = THREE.RepeatWrapping;
wireTexture.repeat.set(parseInt(PlotID['Chart_dataobj'][DataID].xLength), parseInt(PlotID['Chart_dataobj'][DataID].yLength));
wireMaterial = new THREE.MeshBasicMaterial({ map: wireTexture, vertexColors: THREE.VertexColors, side:THREE.DoubleSide });
wireMaterial.map.repeat.set(parseInt(PlotID['Chart_dataobj'][DataID].xLength), parseInt(PlotID['Chart_dataobj'][DataID].yLength));
graphMesh = new THREE.Mesh(window[PlotID]['Chart_dataobj'][DataID].surfaceGeometry, wireMaterial);
graphMesh.doubleSided = true;
}
}
graphMesh.id = DataID;
graphMesh.name = DataID;
window[PlotID].Scene.add(graphMesh);
if (typeof(callback)=="function") { callback(); }
}
我知道這一切都是與表面幾何形狀正確,還有就是與元素我都匹配號碼爲重複次數的錯誤。另外,如果有人知道屬性2是什麼,那會很有幫助。
謝謝
請問您有幾何圖形的UV? – WestLangley
是的,它有頂點和麪,以及所有適當的東西。只要我不嘗試將圖像映射到它,它就可以正常工作。這就是你所說的紫外線? –
適當的東西?那是什麼? – WestLangley