는 자바 스크립트 콘솔에서, 나는 그것이 무엇을 의미 하는가 경고Chrome에서 '성능 경고 : 일부 텍스처는 렌더링 할 수 없습니다'는 의미는 무엇입니까? 내 WebGL을에서
PERFORMANCE WARNING: Some textures are unrenderable.
를 참조?
는 자바 스크립트 콘솔에서, 나는 그것이 무엇을 의미 하는가 경고Chrome에서 '성능 경고 : 일부 텍스처는 렌더링 할 수 없습니다'는 의미는 무엇입니까? 내 WebGL을에서
PERFORMANCE WARNING: Some textures are unrenderable.
를 참조?
WebGL은 OpenGL ES 2.0 비헤이비어를 적용하고 WebGL 앱이 액세스 권한이없는 데이터에 액세스하지 못하게해야합니다. 이렇게하려면 WebGL 구현은 OpenGL ES 2.0 사양에 따라 읽을 수있는 모든 텍스처를 읽을 수있는 확장명이 없는지 등 많은 것을 검증해야합니다.
그래서, 모든 드로잉에서 모든 텍스처가 "큐브 완료"및 "밉맵"인 큐브 맵인 경우 각 텍스처가 "텍스처 완료"인지 확인하는 것을 포함하여 필요한 모든 기준을 충족하는지 확인해야합니다 큐브 완성 ", 텍스처 필터링이 올바르게 설정된 2의 비 규격 인 경우 등 ... 이러한 조건 중 하나라도 충족되지 않으면 WebGL 구현은 투명한 검은 텍스처를 대신하여 동작이 사양을 준수하도록하고 장치간에 일관성이 유지됩니다.
이러한 검사는 비용이 많이 들기 때문에 WebGL 구현이 수행 할 수있는 바로 가기는 텍스처가 렌더링 할 수 없는지 추적하는 것입니다. 렌더링 할 수없는 텍스처가 없으면 그리기 시간에 검사가 필요 없습니다. 위의 경고는 기본적으로 WebGL이이 값 비싼 검사를 모두 수행해야한다는 것을 알려주는 일부 텍스처를 렌더링 할 수 없다는 것입니다. 모든 텍스처가 렌더링 가능한지 확인하면 WebGL에서이 검사를 건너 뛸 수 있으며 앱이 더 빨리 실행될 수 있습니다.
"전체 조직"의 정의는, "큐브 완료", 등 ... OpenGL ES 2.0 spec section 3.7.10
이 또한 크롬 28 버그의 결과가 될 수있는 참조 : http://code.google.com/p/chromium/issues/detail?id=242321 나는 때 내 WebGL을 스크립트도이 메시지를 받았습니다 텍스처를 전혀 사용하지 않았습니다.
이 그것은 크롬 29
당신이 Three.js를를 사용하는 경우에 고정, 그것은 THREE.ImageUtils.loadTexture의 잘못된 사용으로 인해 발생할 수 있습니다. 이 텍스처가있는 메쉬를 장면에 추가하기 전에 loadTexture 콜백을 기다려야합니다. – dIsoVi
@dIsoVi Bravo! 지금까지 본 모든 예제는 콜백을 사용하지 않기 때문에 비동기라는 것을 알지 못했습니다. 감사! – krb686
Three.JS의 세부 사항을 알지는 못하지만 일반적으로 장면에 메쉬를 추가하기 전에 텍스처가로드 될 때까지 기다리는 것이 아니라 1x1 픽셀 텍스처를 만들고 그 텍스처에 이미지를로드합니다. 그렇게하면 1x1 픽셀 텍스처가 모든 렌더링 요구 사항을 충족하므로 메시를 즉시 그릴 수 있습니다. 이미지가로드되면 이미지 데이터로 텍스처를 업데이트 한 다음 필터링을 설정하거나 mip을 생성합니다. 그렇게하면 즉시 렌더링을 시작할 수 있습니다. 솔루션이 귀하의 앱에 맞는다면 귀하의 몫입니다. – gman