OpenGL 라인 스트립을 사용하여 동시에 화면에 많은 선을 그려야하고 성능이 느리며 버텍스 버퍼를 사용하는 것이 좋습니다. 나는 꼭지점 버퍼를 처음 사용합니다. 그리려는 각 라인마다 새로운 버퍼가 필요합니까, 아니면 모든 라인에 단일 버퍼를 사용해야합니까 (반드시 서로 연결되어 있지는 않습니다)? 이 시점에서 나는 각 라인이 정점의리스트 인 선 목록을 가지고 있지만, 이것을 빨리 렌더링하는 방법을 모르겠습니다. 어떤 도움을 주시면 감사하겠습니다.버텍스 버퍼가있는 Java OpenGL 선 그리기
EDIT : 예외를 제공하는 현재 코드는 다음과 같습니다. EDIT2 : glVertexPointer를 호출하기 전에 버퍼를 되감으므로 버퍼가 전진하기 때문에 예외가 수정되었습니다. 이 문제가 해결되었습니다.
java.lang.IndexOutOfBoundsException: Required 1 remaining elements in buffer, only had0
at com.sun.gluegen.runtime.BufferFactory.rangeCheck(BufferFactory.java:247)
at com.sun.opengl.impl.GLImpl.glVertexPointer(GLImpl.java:27937)
for (int i = 0; i < lines.size(); i++)
{
List<Vertex> v = lines.get(i);
DoubleBuffer buf = BufferUtil.newDoubleBuffer(v.size() * 3);
Iterator<Vertex> iter = v.iterator();
while (iter.hasNext())
{
Vertex vt = iter.next();
buf.put(new double[] { vt.x, vt.y, vt.z });
}
gl.glVertexPointer(3, GL.GL_DOUBLE, 0, buf);
gl.glEnableClientState(GL.GL_VERTEX_ARRAY);
gl.glDrawArrays(GL.GL_LINES, 0, v.size());
gl.glDisableClientState(GL.GL_VERTEX_ARRAY);
}
는 희망이 내 문제에 더 좋은 통찰력을 (내가 여기 불구하고 배우려고 노력하고,이 코드는 문제가 알) 제공합니다. 함께 제공
덕분에, 제프
아니요, "단 하나의"꼭지점 버퍼가 없습니다. 당신은 원하는만큼 가질 수 있습니다. VBO에 "렌더링"하지 않으면 glBufferData 및/또는 glBufferSubData로 채 웁니다. vbo에서 glBindBuffer + glVertexPointer로 오프셋하여 데이터에 _refer_하고 실제로 연속 Draw의 데이터를 사용합니다. VBO는 정점 버퍼입니다. – Bahbar