저는 OpenGL 프로그램에서 작업 중이므로 경계 상자를 계산해야합니다. 코드를 만들었지 만 꼭지점 버퍼에서 꼭지점 좌표를 가져올 수 없습니다. 누군가가 버텍스 버퍼에서 데이터를 얻는 쉬운 방법을 설명 할 수 있습니까? Java for android and OpenGL es를 사용하고 있습니다.버텍스 버퍼를 버텍스 배열로 변환합니다.
2
A
답변
1
OpenGL ES 3.0 이상을 사용하는 경우 glMapBufferRange()
을 사용하여 직접 버퍼 데이터에 액세스 할 수 있습니다. 기능에 대한 자세한 내용은 man page을 참조하고 Android에서는 Java 바인딩에 대한 자세한 내용은 GLES30 documentation을 참조하십시오.
ES 2.0에서이를 수행하는 합리적인 방법이 없다고 생각합니다. 나는 절대적으로 끔찍한 방법을 생각할 수는 있지만, 그 방향으로 인도하는 것이 좋지 않을 것입니다. 글쎄, 완벽을 위해서,하지만 을하지 말아라. : 렌더 타겟에 버텍스 데이터를 남기고, glReadPixels()
으로 다시 읽는 것을 렌더링 할 수있다.
자신의 코드에서 정점 데이터에 자주 액세스해야하는 경우 복사본을 유지하면 더 잘 작동합니다. glBufferData()
을 호출했을 때 이미 데이터가 있습니다. 현재 glBufferData()
콜 이후에 버려지는 경우 버텍스 데이터에 액세스해야 할 때마다 사용하고 유지하십시오.
0
는 내가 그것을
mFb= (FloatBuffer) vb.getData(UlVertexBuffer.VERTEX_FIELD_POSITION).position(0);
getmFloatArray(mFb);
mSb= (ShortBuffer) ib.getData();
getmShortArray(mSb);
모든 프레임이 저하 될 가능성이 같은 GPU에서 정점 데이터를 다운로드하는 방법을 발견했습니다. 버텍스 정보의 로컬 복사본을 유지하십시오. –