2016-12-28 1 views
0

FloatBuffer의 내용을 Float의 배열로 초기화했습니다. 그리고 나서 내가 넣은 Floats을 수정하면 FloatBuffer의 값을 수정하지만 이상한 결과가 나올 것으로 예상됩니다.FloatBuffer의 내용을 참조로 수정할 수 있습니까?

내가 잘못하고 있니? 그렇게 할 수 있습니까?

편집 : 내 실수로, 나는 Float이 불변이므로 정상적인 동작임을 이해했습니다. 그래서 내 질문에있을 것입니다, 그래서 쉽게 FloatBuffer 내용을 참조로 수정할 수 있도록 FloatBuffer 변경할 float 래퍼 함께 채우기 위해 무엇입니까? 아니면 OpenGL 데이터 전송을위한 FloatBuffer에 대한 더 멋진 대안이 있습니까?

답변

0

FloatBuffer에는 사용자를 올바르게 이해하면 원하는대로 수행 할 수있는 메서드가 있습니다.

FloatBuffer를 사용하면 position method을 호출하여 위치를 설정할 수 있습니다. 완료되면 0으로 돌아 오는 것을 잊지 마십시오. 올바르게 기억하면 OpenGL은 0으로 설정해야합니다. 그런 다음 getput 방법으로 해당 위치를 읽거나 쓸 수 있습니다. 당신이 기본 메모리의 내용을 업데이트해야하는 경우

그래서 당신은 지금처럼 할당 된 FloatBuffer에서 수행 할 수 있습니다 :

floatBuffer.position(position); 
    floatBuffer.put(data, startIndex, count); 
    floatBuffer.position(0); 
+0

이 내가 원하는 것이 아니다. 한 번 값을 넣고 바깥에서 넣은 값을 변경하고 FloatBuffer에서 값을 변경하려고합니다. 하지만 FloatBuffers는 'float'값만 유지하고 원시 타입을 사용할 수는 없으므로 참조로 값을 변경할 수 없습니다. – user2591935

+0

FloatBuffers는 네이티브 메모리에 할당됩니다. 저장된 데이터. 할당 된 메모리는 배열로 저장되므로 참조가됩니다. 자바 객체가 네이티브 메모리에 직접 액세스하기를 원한다면 나는 그것이 가능하다고 생각하지 않는다. – satm12

관련 문제