由于非常量表达式初始化导致 for 循环出错
Error in for-loop due to non-constant expression initialization
我正在尝试在 GLSL 中实现插入排序,但是编译着色器时 for-loop 出现错误:
three.min.js:592 THREE.WebGLShader: gl.getShaderInfoLog() ERROR: 0:254: 'j' : Loop index cannot be initialized with non-constant expression
for (int i = 0; i < n - 1; i++)
{
for (int j = i+1; j > 0; j--)
{
if (angle[j - 1] > angle[j])
{
float temp = angle[j - 1];
angle[j - 1] = angle[j];
angle[j] = temp;
}
}
}
知道如何解决这个问题吗?
使用冒泡排序代替插入排序,后者在 for 循环中不包含非常量表达式。代码写在下面。
float temp = 0.0;
for (int write = 0; write < n; write++)
{
for (int sort = 0; sort < n - 1; sort++)
{
if (angle[sort] > angle[sort + 1])
{
temp = angle[sort + 1];
angle[sort + 1] = angle[sort];
angle[sort] = temp;
}
}
}
我正在尝试在 GLSL 中实现插入排序,但是编译着色器时 for-loop 出现错误:
three.min.js:592 THREE.WebGLShader: gl.getShaderInfoLog() ERROR: 0:254: 'j' : Loop index cannot be initialized with non-constant expression
for (int i = 0; i < n - 1; i++)
{
for (int j = i+1; j > 0; j--)
{
if (angle[j - 1] > angle[j])
{
float temp = angle[j - 1];
angle[j - 1] = angle[j];
angle[j] = temp;
}
}
}
知道如何解决这个问题吗?
使用冒泡排序代替插入排序,后者在 for 循环中不包含非常量表达式。代码写在下面。
float temp = 0.0;
for (int write = 0; write < n; write++)
{
for (int sort = 0; sort < n - 1; sort++)
{
if (angle[sort] > angle[sort + 1])
{
temp = angle[sort + 1];
angle[sort + 1] = angle[sort];
angle[sort] = temp;
}
}
}