如果我的任何条款不正确,请提前道歉。我对WebGL词汇的熟悉程度还很新。
我目前有一个项目,我正在创建一个图表库。我的问题源于图表坐标系中的点映射到webgl画布像素坐标的缓慢。例如:
_____________ 100, 100
| |
| |
| |
| |
0,0 -------------
我的显示点随机分布在([0,100],[0,100])之间。然后,我需要将0到100个图表坐标之间的x / y值转换为0并说出640像素坐标。当我 CAN 在javascript中执行此转换时,我想知道是否有更好的机制通过WebGL技术来做到这一点(比如使用某些输入注册某种形式的矩阵变换,显卡可以比普通的旧javascript代码。)
我当前的javascript函数从模型的坐标转换为像素坐标:
function transformY(y, modelYmin, modelYmax, pixelYMax) {
var numerator = y - modelYmin;
var denominator = modelYmax - modelYmin;
var ratio = numerator / denominator;
var scale = ratio * pixelYMax;
return scale;
}
function transformX(x, modelXmin, modelXmax, pixelXMax) {
var numerator = x - modelXmin;
var denominator = modelXmax - modelXmin;
var ratio = numerator / denominator;
var scale = ratio * pixelXMax;
return scale;
}
提前致谢!
答案 0 :(得分:0)
PIXI有一个名为dimensions
的默认制服,您可以在WebGL代码中使用它。只需确保在PIXI过滤器中添加制服,如下所示:
function myFilter() {
var uniforms = {
dimensions: {type: '4f',value: new Float32Array([0, 0, 0, 0])}
}
}
(例如,查看dimensions
在任何默认过滤器中的使用方式,例如http://pixijs.github.io/docs/filters_pixelate_PixelateFilter.js.html)
如果在此定义了统一,PIXI将自动填充值,以便您可以使用WebGL中的dimensions.xy
向量访问画布宽度/高度,然后您可以在其中执行变换。