2016-08-08 13 views
-1

enter image description here Ich bin sehr neu zu Open GL. Mein Motto ist Freihandzeichnen mit dem offenen GL. Dies versuche ich durch Verbinden von Scheitelpunkten auf Drag zu erreichen. Mein Problem ist, sobald ich irgendwo auf dem Bildschirm tippe, wird eine Linie vom Bildschirm des Zentrums zu diesem Punkt gezeichnet. Ich bin nicht in der Lage, herauszufinden, warum? Bitte helfen Sie. DieseOpen GL Line Draw android

ist, was ich tue zu ziehen:

@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(); 

    } 

} 

I for-Schleife wissen, ist nicht der beste Weg, und das ist das Problem, aber ich bin nicht in der Lage, darüber hinwegzukommen.

EDIT:

Dies ist, wie ich

public void handleTouchDrag(float normalizedX, float normalizedY) { 
    points.add(normalizedX); 
    points.add(normalizedY); 

} 

wo Punkte Array bin Zugabe:

final float normalizedX = (event.getX()/(float) v.getWidth()) * 2 - 1; 
final float normalizedY = -((event.getY()/(float) v.getHeight()) * 2 - 1); 
+0

https://developer.android.com/training/graphics/opengl/draw.html –

+0

siehe diesen Link http://stackoverflow.com/questions/16650419/draw-in-canvas-by-finger-android –

+0

@AndroidDeveloper danke, aber ich muss es in Open gl nicht Canvas tun – Payal

Antwort

1

Sie füttern die Funktion mit nur einem Scheitelpunkt und fordern Sie eine Linie zeichnen Segment, und OpenGL beschließt, den zweiten Punkt als Ursprung zu betrachten.

können Sie

glDrawArrays(GL_LINE_STRIP, 0, points.size()); 

verwenden Und dies wird Linien zum vorherigen Punkt ziehen.

+0

Ich versuchte dies ... aber dint Arbeit – Payal

+0

Besser entfernen Sie die for-Schleife und versuchen Sie diese glDrawArrays (GL_LINE_STRIP, 0, points.size()); Ich habe auch meinen Code in der Antwort bearbeitet. – codetiger

+0

Ich habe einen Screenshot des Ergebnisses hochgeladen, das ich in beide Richtungen bekomme, mit oder ohne For-Schleife. Ich habe nur die untere Linie gezogen und gezeichnet, aber die mittlere Verbindung mit der unteren ist selbstständig. Bitte helfe – Payal