1
我已经充实了一个循环,为使用着色器的基于浏览器的可视化中的每个不同视图动态生成纹理大小。我知道为了将我的值传递给着色器而需要的最小像素数量;但是我需要将它们缩放到2的大小,然后确保它们的x和y尺寸也是2的幂,比例为1:1,2:1或1:2。现在我的循环是无限的,我想我需要继续增加2像素计数的总体功率,直到达到满足我的一个比例的大小。如何动态和高效地生成两个幂的纹理大小和尺寸
我的问题是:有没有更高效或直接的方法来实现我在这里要做的事情?
var motifMinBufferSize = 80000;
var bufferSize; // the total number of texels that will be in the computation buffers (must be a power of two)
var dimensions;
function initValues() {
bufferSize = setBufferSize();
dimensions = setPositionsTextureSize();
}
function setBufferSize() {
var buffer = motifMinBufferSize;
// fill out the buffers to a power of two - necessary for the computation textures in the shaders
var powCount = 1;
var powOf2 = 2;
while (buffer > powOf2) {
powOf2 *= 2;
powCount++;
}
while (buffer < powOf2) {
buffer += 1;
}
}
function setPositionsTextureSize() {
var dimensions = {
texWidth : null,
texHeight : null
};
var foundDimensions = false;
var powOf2 = 2;
while (foundDimensions === false) {
var candidateWidth = bufferSize/powOf2;
if (candidateWidth === powOf2 || candidateWidth/2 === powOf2 || candidateWidth*2 === powOf2) {
dimensions.texWidth = candidateWidth;
dimensions.textHeight = powOf2;
foundDimensions = true;
} else {
powOf2 *= 2;
}
}
return dimensions;
}
非常高雅 - 谢谢! – gromiczek