【发布时间】:2015-05-17 15:28:26
【问题描述】:
我制作了一个游戏,我在其中画出这样的贝塞尔曲线:
final VertexBufferObjectManager vbom = engine.getVertexBufferObjectManager();
final HighPerformanceMeshVertexBufferObject pMeshVBOM = new HighPerformanceMeshVertexBufferObject(vbom, pBufferData, pBufferData.length, DrawType.DYNAMIC, true, Mesh.VERTEXBUFFEROBJECTATTRIBUTES_DEFAULT);
final HighPerformanceLineChainVertexBufferObject pLeftCurbLineChainVBOM = new HighPerformanceLineChainVertexBufferObject(vbom, triangleCount * 3, DrawType.DYNAMIC, true, leftCurb.VERTEXBUFFEROBJECTATTRIBUTES_DEFAULT);
final HighPerformanceLineChainVertexBufferObject pRightCurbLineChainVBOM = new HighPerformanceLineChainVertexBufferObject(vbom, triangleCount * 3, DrawType.DYNAMIC, true, rightCurb.VERTEXBUFFEROBJECTATTRIBUTES_DEFAULT);
leftCurb = new LineStrip(0, 0, 10f, triangleCount, pLeftCurbLineChainVBOM){
@Override
protected void onManagedUpdate(final float pSecondsElapsed) {
super.onManagedUpdate(pSecondsElapsed);
drawByBezier(curveOffset);
};
void drawByBezier(float curveOffset){
for (int triangleIndex = 0; triangleIndex < triangleCount; triangleIndex++) {
this.setX(triangleIndex, getBezierX(triangleIndex, -curveBottom, -curveControlPoint, -curveTop + curveOffset));
this.setY(triangleIndex, triangleIndex * heightIncrement);
}
}
通过改变 curveOffset 的值,我改变了曲线的外观。
第一个参数(10f)是线宽。当我在 Galaxy S5 (android 5) 上测试它时,线宽被绘制为大约 2 像素宽,如果我在那里放较低的值,比如 1.5f,则绘制的线非常细。另一方面,放置像 100f 这样的大数字并没有做任何事情 - 线保持相同(小)宽度。 我在 Galaxy S3 mini(android 4.1.2)上测试了这个,线宽在那里工作(虽然性能是另一回事......)。线条是按照我的意愿绘制的。我怎么能在 GalaxyS5 (android 5) 中做到这一点。对我来说,这看起来像是特定于设备或操作系统的问题(openGL 版本?),但有什么办法可以克服这个问题吗?
【问题讨论】:
标签: opengl-es width line andengine bezier