我正在尝试在android中创建一个实时图表工具,并且在大多数情况下它都有效,除了当我在其中一个路径中获得太多数据点时它会破坏openGL。我正在使用路径,因为当传入的值超出图形的当前边界时,我正在通过矩阵转换整个数据集。我是以错误的方式来做这件事的吗?是否有更好/更合适的API用于此类事情?如果可能/我知道怎么做,我很乐意修剪当前界限的路径。谢谢!
的onDraw:
@Override
protected void onDraw(Canvas canvas) {
scaleX = getWidth() / (maxX - minX);
scaleY = getHeight() / (maxY - minY);
// TODO: Use clips to draw x/y axis, allow color to be defined in attributes, etc.
canvas.drawColor(0xFF000000);
for (DataLine line : mPathList.values()) {
canvas.drawPath(line, line.getPaint());
}
}
(DataLine是包含Paint对象的Path的子类)
有问题的错误是来自OpenGLRenderer的警告: “形状路径太大而无法渲染到纹理中”
答案 0 :(得分:19)
如果您查看日志,您会发现如下错误:
04-04 10:39:06.314:W / OpenGLRenderer(6092):形状路径太大而无法 渲染成纹理
自打开硬件加速后,所有内容都会呈现为纹理,并且纹理有一个大小限制。如果将较大的形状分解为较小的形状,那将解决您的问题。或者只是关闭硬件加速:
android:hardwareAccelerated="false"