我有一个奇怪的问题,我有一个非常简单的节点/ expressjs应用程序(我有一个更复杂的一个,但这个简单的例子显示了问题).这个应用程序有三个路由,如下所示:
var i = 0;
app.route('/login')
.get(function(req, res){
console.log('login', ++i);
res.send('login');
})
app.route('/test')
.get(function(req, res){
console.log('test', ++i);
res.send('test');
})
app.route('/')
.get(function(req, res){
console.log('index', ++i);
res.send('index');
})
Run Code Online (Sandbox Code Playgroud)
很简单.任何时候请求其中一条路线'i'递增并记录,并且它工作正常,除非chrome dev工具打开.当dev工具打开时,请求登录或测试将被请求两次.这是日志的结果:
15:45:30 web.1 | index 1
15:45:33 web.1 | login 2
15:45:34 web.1 | login 3
15:45:37 web.1 | test 4
15:45:37 web.1 | test 5
15:45:41 web.1 | login 6
15:45:42 web.1 | login 7
15:45:45 web.1 | test 8
15:45:45 web.1 | test 9
15:45:48 web.1 | index 10
Run Code Online (Sandbox Code Playgroud)
这里发生了什么.这是Chrome的错误吗? …
javascript google-chrome node.js express google-chrome-devtools
我正在尝试将一些对象渲染到画布上,而我在理解什么不起作用时遇到了一些麻烦.
我正在构建两个对象,代表我想渲染的两个网格.如果我创建一个网格,代码工作正常,我认为问题是,当我构建两个或更多时,数据被搞砸了.
这是网格数据的一个例子:
"name":"cone",
"buffers":{
"vertexPosition":{}, // Buffer
"vertexIndex":{} // Buffer
},
"mesh":{
"vertices":[], // emptied it to fit on page
"faces":[] // emptied it to fit on page
},
"mvMatrix": Float32Array[16],
"itemSize":3,
"numItems":12,
"program":{
"vertexPosAttrib":0,
"mvMatrixUniform":{},
"pMatrixUniform":{}
}
Run Code Online (Sandbox Code Playgroud)
这是从这个功能构建的:
buildMeshData: function(){
this.mvMatrix = mat4.create();
this.buffers.vertexPosition = gl.createBuffer();
gl.bindBuffer(gl.ARRAY_BUFFER, this.buffers.vertexPosition);
gl.bufferData(gl.ARRAY_BUFFER, new Float32Array(this.mesh.vertices), gl.STATIC_DRAW);
this.buffers.vertexIndex = gl.createBuffer();
gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, this.buffers.vertexIndex);
gl.bufferData(gl.ELEMENT_ARRAY_BUFFER, new Uint16Array(this.mesh.faces), gl.STATIC_DRAW);
this.itemSize = 3;
this.numItems = this.mesh.faces.length;
var vertexProps = {
attributes: ['vec3', 'VertexPosition'],
uniforms: ['mat4', 'MVMatrix', 'mat4', …
Run Code Online (Sandbox Code Playgroud) 我发现渲染数据时很难理解顶点和纹理坐标之间的相关性。我有一个使用从 obj 解析的 drawElements 表单数据绘制的立方体。我在某个接近于使用简单平面的地方得到了纹理,其中位置和纹理坐标的顶点数,但是一旦我使用更复杂的模型,甚至只是更复杂的 uv 展开,我最终会得到纹理全部错误。
从我读到的内容来看,没有看到像使用顶点位置一样使用纹理坐标索引的方法,这是不幸的,因为 obj 具有该信息。我让它接近工作的方法是通过 obj.txt 中的索引数据构建一个纹理坐标数组。但由于顶点和纹理坐标数组的长度不同(例如,在立方体的 obj 中,有 8 个顶点和最多 36 个纹理坐标,具体取决于网格是否展开),因此它们不相关。
使用drawElements 并将顶点映射到正确的纹理坐标的正确工作流程是什么?