gpt4 book ai didi

android - 在 Android 中使用 openGL 绘制动态图形

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:58:58 25 4
gpt4 key购买 nike

我想绘制来自蓝牙设备的实时数据。我有一个蓝牙设备,手机将连接到它并读取来自它的数据。数据是来自某些传感器的电压电平,采样率为每秒 300 个样本。我见过的大多数绘图库(如 aiChart、Androidplot、achartengine 等)都无法处理那么多的数据和重新绘制图形。所以我研究了 openGL 和 Android NDK,似乎我可以使用其中任何一个和我拥有的采样率来绘制图表。有没有人有在 android/Java 和/或 NDK 代码示例中绘制 openGL 线图的示例代码?

最佳答案

我们只是通过创建一个包含多个页面的点数组类并在带有偏移量的 opengl 中绘图来完成类似的操作,因此当前点始终位于同一位置。

这个想法使用固定大小的数组和一个单独的计数器,这样您就不会遇到会导致 gc 启动的内存分配问题。一旦页面已满,循环到显示旧页面的下一页。这个想法是,如果你有 5 个页面,你可以写入一个,显示另外 3 个,然后在单独的线程中将最后一个页面批量写入 sdcard 上的 sqlite,这样你就可以稍后提取所有数据。

只要你只有一个线程写入数组,你就可以摆脱类似的东西

arrayPoint[] p;
....
int currentPos = 0;
arrayPoint current = p[currentPos];

.....
while(....

if(current.end < current.max)
{
.... get datax and datay
current.end++;
current.x[current.end] = datax;
current.y[current.end] = datay;
}
else
{
currentPos = getNextPos();
current = p[currentPos];
current.end = -1; // truncate the array without actually freeing or allocating mem
..... flip volatile bool to let other thread know its ok to get exclusive access to its data etc
}

它非常快,应该可以满足您的需求。然后您可以在 Canvas 上输出为一个点或在 opengl es 中绘制

希望对您有所帮助。

关于android - 在 Android 中使用 openGL 绘制动态图形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7235326/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com