webgl drawArray intermediate results
webgl drawArray intermediate results
setMatrixUniforms();
gl.drawArrays(gl.TRIANGLES, 0, triangleVertexPositionBuffer.numItems);
一旦设置了矩阵,(用于投影等(传递给drawArray的点将被相应地投影和绘制。我想知道是否有任何方法可以获得这些转换点的最终位置。
一个简单的解决方案是用普通的javascript和你的矩阵库重新计算WebGL之外的位置。
例如,如果您想知道应用模型视图矩阵后点 (0, 0, 0( 变成什么,您只需将其与该矩阵相乘即可。
var point = [0, 0, 0];
var result = mat4.multiplyVec3(mvMatrix, point, []);
或者,如果您想要在顶点着色器末尾输出的最终转换点,则通常只是您的点乘以模型视图矩阵,然后乘以投影矩阵。
// Create a model view projection matrix by multiplying the two matrices together
var mvpMatrix = mat4.create();
mat4.multiply(pMatrix, mvMatrix, mvpMatrix);
// Multiply the point (0,0,0) by the model view projection matrix to get the result
var point = [0, 0, 0, 1];
var result = mat4.multiplyVec4(mvpMatrix , point, []);
如果你想知道所有顶点的最终结果,你可以遍历每个顶点并计算其结果。
// Create a model view projection matrix by multiplying the two matrices together
var mvpMatrix = mat4.create();
mat4.multiply(pMatrix, mvMatrix, mvpMatrix);
var results = [];
// Calculate the transformed points for each vertex
for(var i = 0; i < (vertices.length/3); i++) {
var point = [vertices[i*3], vertices[i*3+1], vertices[i*3+2], 1];
results[i] = mat4.multiplyVec4(mvpMatrix, point);
}
在上面的例子中,vertices
数组是 1 维的。
由于这种方法非常简单,并且您正在重新计算WebGL已经计算的内容,因此如果您必须重新计算大量点,则可能会太慢。但是,对于许多用例,这将正常工作。
相关文章:
- MongoDB Querying: Order & Export Results
- webgl drawArray intermediate results
- Date.parse() results in NaN
- NodeJS异步模块:如何在回调中获取results对象
- Wait for All Loop Results Javascript
- jade, express, and mysql results
- Angular + httpService: POST & DELETE results?
- 在 cordova 提示符下将子字符串添加到 results.input1
- Breeze JS:有没有办法从data.results中查询实体
- Displaying php results in html <div>?
- results[0].formatted_address return undefined or null
- getElementById onchange results in对象不是函数
- Javascript results in URL?
- 两个值之间的results数组-javascript
- Mysqli/Ajax如何在每个请求中加载x个以上的Results
- javascript/jquery中.results函数和.result函数的区别
- 从函数WEIRD RESULTS调用函数
- can't select json-results on select2
- 未捕获的TypeError: Cannot read property 'results'的未定义- Y
- 未捕获的TypeError: Cannot read property 'results'的定义