我是Open GL的新手。我的座右铭是使用开放式GL创建徒手画。 这我想通过连接Drag上的顶点来实现。我的问题是,当我点击屏幕上的任何地方时,从中心操作系统屏幕绘制一条线到那一点。我无法弄清楚为什么?请帮忙。
这就是我要画的内容:
@Override
public void onDrawFrame(GL10 gl) {
gl.glClear(GL10.GL_COLOR_BUFFER_BIT);
glUniform4f(uColorLocation, 1.0f, 0.0f, 0.0f, 1.0f);
vertexData.put(toFloatarray(points));
vertexData.clear();
for (int i = last_size; i < points.size(); i++) {
glDrawArrays(GL_LINES, i , 2);
last_size = points.size();
}
}
我知道循环不是最好的方法,这是问题,但我无法克服它。
编辑:
这就是我向数组
添加点数的方法public void handleTouchDrag(float normalizedX, float normalizedY) {
points.add(normalizedX);
points.add(normalizedY);
}
其中:
final float normalizedX = (event.getX() / (float) v.getWidth()) * 2 - 1;
final float normalizedY = -((event.getY() / (float) v.getHeight()) * 2 - 1);
答案 0 :(得分:1)
您只为一个顶点提供函数并请求绘制线段,OpenGL决定将第二个点视为原点。
您可以使用
glDrawArrays(GL_LINE_STRIP, 0, points.size());
这将绘制线条到前一点。