내 응용 프로그램에서 6x4096x4096 큐브 맵 텍스처 용 밉맵을 생성합니다. 다음으로 시간에 의존하는 텍스처에 대한 다른 변경 사항을 수행해야합니다. 모든 드로잉은 requestAnimationFrame의 루프 내부에서 수행됩니다.generateMipmap이 완료 되었습니까?
브라우저, 장치 등에 따라 경우에 따라 최종적으로 루프의 3 개, 때로는 4 개 또는 5 개의 연속 프레임이 필요하므로 정확히 어떤 밉맵이 이미 수행되었는지 알고 있어야합니다.
질문 : WebGL의 명령 "generateMipmap"에 의해 "TEXTURE_CUBE_MAP"에 대해 생성 된 requestAnimationFrame의 루프 밉맵이 준비되었는지 확인하는 방법은 무엇입니까? "generateMipmap"완료 상태를 확인하기위한 플래그가 있습니까?
답장을 보내 주셔서 감사합니다. 내 문제는 WebGL 명령의 순서가 아니라 requestAnimationFrame의 루프 동작입니다. 프레임 번호 0에서 "generateMipmap"을 호출한다고 가정 해 보겠습니다. 그러면 밉맵 생성을 완료하는 데 필요한 프레임 수를 알고 싶습니다. 마지막 프레임에서는 drawArrays와 같은 함수를 호출하고 싶습니다. ". 사전에 정확한 프레임 수를 알 필요는 없지만 작업 (밉맵 생성)이 완료되면 일종의 "if"문을 사용하여 확인해야합니다. –
API가 없습니다. 앞서 말했듯이'generateMipmap'은 완료 될 때까지 잠글 수 있습니다. 또한 사용자의 하드웨어가 중요한 역할을하므로 밉 레벨 생성 프레임 수를 안정적으로 얻을 수있는 방법도 없습니다. 빈번히 밉맵을 재생성 할 필요가 없다면 같은 프레임 (또는 다음 프레임)의 텍스처를 사용하는 것이 좋습니다. 텍스처를 자주 업데이트해야하는 경우 밉맵 사용을 피하는 방법을 찾는 것이 좋습니다. –
내가 무엇을 필요로하는지 (언뜻보기에는 이상하게 보일 수도 있음) 이유는 "drawArrays"와 같은 호출에 전달되는 시간 매개 변수 t를 사용하고 있기 때문입니다. "generateMipmap"이 (프레임에서) 완료 될 때를 알아야하므로 "drawArrays (t)"t의 올바른 값 (requestAnimationFrame의 루프의 각 프레임 지속 시간 측정)을 전달할 수 있습니다. –