2013-06-20 3 views
1

안드로이드는 caniuse.com에 따라 버전 3.0 이후로 완전히 css 3d 변형을 지원해야합니다. 아래 테스트 중 하나 (예 : Android 4.1, Samsng Galaxy)를 실행하면 true를 반환합니다. 그러나 3D 변환과 보존 -3D를 사용하는 페이지를 볼 때 작동하지 않습니다."preserve-3d"테스트가 Android에서 (Browserstack을 통해) 작동하지 않습니까?

http://jsfiddle.net/bartaz/e3Rjz/show/

테스트 1 :

(function(Modernizr, win){ 
    Modernizr.addTest('csstransformspreserve3d', function() { 

     var prop = Modernizr.prefixed('transformStyle'); 
     var val = 'preserve-3d'; 
     var computedStyle; 
     if(!prop) return false; 

     prop = prop.replace(/([A-Z])/g, function(str,m1){ return '-' + m1.toLowerCase(); }).replace(/^ms-/,'-ms-'); 

     Modernizr.testStyles('#modernizr{' + prop + ':' + val + ';}', function (el, rule) { 
      computedStyle = win.getComputedStyle ? getComputedStyle(el, null).getPropertyValue(prop) : ''; 
     }); 

     return (computedStyle === val); 
    }); 
}(Modernizr, window)); 

테스트 2 : 예를 들어

Modernizr.addTest('csstransformspreserve3d', function() { 

    var prop, 
     val, 
     cssText, 
     ret; 

    prop = 'transform-style'; 
    if ('webkitTransformStyle' in document.documentElement.style) { 
    prop = '-webkit-' + prop; 
    } 
    val = 'preserve-3d'; 
    cssText = '#modernizr { ' + prop + ': ' + val + '; }'; 

    Modernizr.testStyles(cssText, function (el, rule) { 
    ret = window.getComputedStyle ? getComputedStyle(el, null).getPropertyValue(prop) : ''; 
    }); 

    return (ret === val); 
}); 

는 지금은 문제가 무엇인지 모른다. 테스트가 작동하지 않습니까? 안드로이드 4.1은 "preserve-3d"를 지원하지 않습니까? 아니면 뭔가 다른 것이 있습니까?

+0

Android, inbuilt, chrome mini .. 또는 다른 어떤 브라우저에서 사용하고 있는지 지정하십시오. – MarmiK

+0

inbuilt 것입니다. browserstack에는 선택의 여지가 없기 때문에. 이것은 아마도 에뮬레이터 관련 문제 일 것입니다. – gang

답변

3

발생한 문제는 에뮬레이터의 결함입니다. 귀하의 테스트 케이스는 안드로이드 4.0.4 및 4.1.2를 실행하는 실제 장치에서 잘 작동합니다. 안드로이드 에뮬레이터 GPU는 필요한 3D 기능을 모두 구현하지 않는 소프트웨어에서 에뮬레이션되므로 렌더링이 잘못되어도 기능 테스트가 성공적으로 수행됩니다. (브라우저가 지원하지만 기본 GPU 에뮬레이션은 지원하지 않습니다.)

1

inbuilt 브라우저를 사용하는 경우 gpu를 사용하고있는 장치를 확인하거나 GPU를 사용하고 있습니까?

3d 변환은 브라우저 + 하드웨어에 완전히 의존합니다. ..

이 부분을 확인하시기 바랍니다 가능한 응답하면 ..

그것은 하드웨어 리소스 (그래픽 처리 장치)를 사용하므로 장치가 GPU를하거나 GPU를 사용하지 않는 경우는 3D 효과의 렌더링하지 않습니다

이 작업을 수행하기 바랍니다 ..