2016-08-08 3 views
-1

enter image description here Open GL에 대한 새로운 소식입니다. 나의 좌우명은 오픈 GL을 사용하여 자유형 드로잉을 만드는 것입니다. 드래그에 정점을 연결하여이 작업을 수행하려고합니다. 내 문제는 곧 스크린의 어느 곳을 가볍게 두 드리면 화면 중앙에서 그 지점까지 선이 그려진다. 나는 이유를 알아낼 수 없다? 도와주세요.Open GL Line Draw android

이 내가 그리는 일을하고 무엇을 :

내가 루프 알고
@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

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

+0

이 링크 참조 http://stackoverflow.com/questions/16650419/draw-in-canvas-by-finger-android –

+0

@AndroidDeveloper 감사하지만 can not can can can can not open 캔버스에서 수행해야합니다 – Payal

답변

1

당신은 단지 하나 개의 정점으로 기능을 공급하고 선을 그릴 요청하는 세그먼트 및 OpenGL은 두 번째 점을 원점이라고 간주하기로 결정합니다.

당신은

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

을 사용할 수 있습니다 그리고 이것은 이전의 시점에 선을 그릴 것입니다.

+0

시도해 봤지만 ... dint work – Payal

+0

for 루프를 제거하고이 glDrawArrays (GL_LINE_STRIP, 0, points.size())를 시도하는 것이 더 좋습니다. 또한 대답에서 내 코드를 편집했습니다. – codetiger

+0

For 루프의 유무와 상관없이 두 가지 방법으로 얻은 결과의 스크린 샷을 업로드했습니다. 나는 단지 끌고 끌었지만 최종선은 연결했지만 가운데 하나는 맨 아래로 연결되어 있습니다. 도와주세요 – Payal