实际上我不知道这是怎么回事,但是:
我想实现这样的功能:我用光标绘制曲线。这条线必须是例如100像素长度,没有更多....当这条曲线的长度变得大于100像素时,最后(旧)像素必须被隐藏(擦除)....我不认为那创建这个数组像素是一个好主意,所以我需要你的建议,PLZ
答案 0 :(得分:1)
由于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
绘制为MAX_CURVE_LENGTH
,将0绘制为end
。对于两者,您可以使用相同的索引缓冲区。