2017-01-21 2 views
0

안녕하세요 여러분 opengles를 사용하여 큐브를 그립니다. 난 함수를 묘화 호출 마다이 코드를 사용하여 coordinates_buffer 업데이트꼭지점 버퍼가 잘 업데이트되지 않았습니다

floatBuffer.position(0); 

floatBuffer.put(coordinates); 
floatBuffer.position(0); 

문제는 (그들 대부분은 API 버전 (22) 또는 상부가) 다른 장치의 첫 번째 요소는 내가 수 갱신되지 않는다는 첫 번째 위치에 머물러있는 동안 이동하는 나머지 정점을보십시오. 또 다른 문제는 좌표를 넣을 때 java.nio.BufferOverflowException이 발생한다는 것입니다. 실수는 두 번째로 60 번 호출되는 코드 라인에 머물러 있다고 생각합니다.

정말로 감사드립니다.

답변

0

1) 그리기 호출 (glDrawArrays/glDrawElements)에 올바른 오프셋을 지정했는지 확인하십시오.
2) Buffer.put() 및 .get() 메서드는 전송 된 요소의 양에 따라 위치를 증가시킵니다. Buffer.put() 메서드는 전송이 제한을 초과하면 BufferOverflowException을 반환합니다. 이 버퍼에 비해 너무 큰 배열을 전달하지 않도록하십시오. 또한 3D 공간에서 전체 개체를 이동하려는 경우 행렬을 사용하여 정점 셰이더에서 최종 정점 위치를 계산하십시오.

관련 문제