其实我不知道这是怎么调用的,但是:
我想实现这样的功能:我正在用光标绘制曲线。这条线必须是例如100 像素长度,不再......当这条曲线的长度变得大于 100 px 时,最后一个(旧)像素必须被隐藏(删除)......我不认为创建这个数组像素是个好主意,所以我需要你的建议,请
最佳答案
由于 OpenGLES 不支持 glBegin/End,除了数组之外,您别无选择。由于 100px 不太适合重新分配,因此您可以使用链接列表结构来存储像素数据,然后在每次发生更新(输入事件)时重建 Opengl 缓冲区。
我可以建议使用数组来代替链表,通过保存开始和结束索引并让它们在数组中循环。但你需要小心小数点。伪代码如下所示:
public void addVertice(float x,float y){
{
if(curveLength<MAX_CURVE_SIZE)
{
ar[end][0]=x;
ar[end][1]=y;
end++;
curveLength++;
}
else{
ar[end][0]=x;
ar[end][1]=y;
end=1+(end+1)%(MAX_CURVE_SIZE-1);// cycle, but never left only one element in array
start=1+(start+1)%(MAX_CURVE_SIZE-1);
ar[MAX_CURVE_SIZE][0]=ar[1][0];
ar[MAX_CURVE_SIZE][1]=ar[1][0];
ar[0][0]=ar[MAX_CURVE_SIZE-1][0];
ar[0][1]=ar[MAX_CURVE_SIZE-1][0];
}
updateBuffers();
}
要绘制缓冲区,您需要处理两个位置;如果start
小于end
,则将start绘制到end。如果 start
大于 end
,则需要将 start
绘制到 MAX_CURVE_LENGTH
,将 0 绘制到 end
。对于两者,您可以使用相同的索引缓冲区。
关于android - 绘制固定长度曲线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8963243/