2014-01-09 3 views
3

게임용 WebGL의 기능을 탐색하고 다양한 장치에서 테스트하고 있습니다. 지금은 모든 렌더링을 처리하는 Turbulenz Engine을 사용하고 있습니다.WebGL이 일부 장치에 텍스처를 렌더링하지 않습니다.

그러나 테스트 한 일부 모바일 및 탭 장치 (Samsung Galaxy 및 Samsung Galaxy Tab II)에서는 텍스처가 올바르게 렌더링되지 않습니다. 그들은 나타나지 않거나 검정색이나 빈 색으로 변합니다. 다음과 같이

내 설정은 다음과 같습니다

  • 삼성 갤럭시 S/갤럭시 탭 II
  • 안드로이드 2.3 (진저 브레드), 안드로이드 4.2 (젤리 빈)에서 WebGL과
  • 구글 크롬 베타는
  • 활성화
  • Turbulenz' spinning crate example

것은 내가 만든이 스크린 샷에서보세요 :

enter image description here

는 좀 다시 검색을 수행하고 this page describing the exact same problem을 발견했습니다. 불행히도, 그것이 발생하고 해결책이 제공되지 않는 이유에 대한 좋은 설명입니다.

"오래된"장치에 대해이 주제에 대한 경험이 있습니까? 그리고 그 문제는 왜 발생합니까? 나는 어딘가에 OS가 텍스쳐를로드 할 때 크기 조정을하고 있다는 것을 읽었습니다. 그리고 그걸 피하는 법?

미리 감사드립니다.

+0

모바일 크롬을 원격 디버깅하여 콘솔이 잘못된 점에 대해 유용한 힌트를 제공했는지 확인하려 했습니까? https://developers.google.com/chrome-developer-tools/docs/remote-debugging – Anton

+0

예, 시도했는데 WebGL에 대한 몇 가지 오류가 발생했습니다. https://lh6.googleusercontent.com/ -45B9-1PMRnc/UtBjH2BGNYI/AAAAAAAAAII/7QvxiD1Q71Q/s1600/error2.png. 이미지를로드하는 것과 같이 POT- 치수 또는 무언가가 깨지는 것 같습니다. – Eric

답변

2

오류가

bindAttribLocation: index out of range 

코드가 너무 많은 속성을 사용하려고하는 것이 좋습니다. GPU가 지원하는 속성의 수를 확인하려면

maxAttributes = gl.getParameter(gl.MAX_VERTEX_ATTRIBS); 

8 WebGL 구현이 지원해야하는 최소값입니다.

bindAttribLocation에 대한 그 오류는 값 bindAttribLocation라는 코드를 의미합니다> = maxAttributes 가장 일반적인 3D 애플리케이션을 위해 그들이 위치를해야하기 때문에 조금 놀라운

은, 법선, 텍스처 아마도 다음 접선, binormals, 정점 좌표 그림 물감. 그것은 단지 6 가지 속성입니다. 텍스처 좌표의 두 번째 또는 세 번째 세트는 평범하지는 않지만 그보다 드물게 보인다. 여전히 오류 메시지가 제안하는 것입니다.

단지 그것의 지옥을 위해 나는 Score Rush (turbulenz 게임)을 점검했다. 0, 1, 2가 아닌 이유는 무엇입니까?하지만 가장 좋은 8 가지 속성을 지원하는 기기에서는 7이 가장 높은 속성이기 때문에 실패 할 것입니다.


업데이트 : turbulenz의 출처를 살펴 보았습니다. 현재 설계된대로 16 개의 속성이 필요합니다. 0에서 15까지의 각 속성에 특정 용도를 제공합니다. 예를 들어, 텍스처 좌표의 첫 번째 세트는 항상 속성 8로 이동합니다 (텍스처가 사라지는 것을 보는 이유입니다). 첫 번째 세트의 탄젠트는 항상 속성 14로 이어집니다.다음은 재 설계 또는 간접의 일부 금액 미만 16 개 속성을 GPU에서 작동하도록해야합니다 할당

SEMANTIC_POSITION = 0; 
SEMANTIC_POSITION0 = 0; 
SEMANTIC_BLENDWEIGHT = 1; 
SEMANTIC_BLENDWEIGHT0 = 1; 
SEMANTIC_NORMAL = 2; 
SEMANTIC_NORMAL0 = 2; 
SEMANTIC_COLOR = 3; 
SEMANTIC_COLOR0 = 3; 
SEMANTIC_COLOR1 = 4; 
SEMANTIC_SPECULAR = 4; 
SEMANTIC_FOGCOORD = 5; 
SEMANTIC_TESSFACTOR = 5; 
SEMANTIC_PSIZE0 = 6; 
SEMANTIC_BLENDINDICES = 7; 
SEMANTIC_BLENDINDICES0 = 7; 
SEMANTIC_TEXCOORD = 8; 
SEMANTIC_TEXCOORD0 = 8; 
SEMANTIC_TEXCOORD1 = 9; 
SEMANTIC_TEXCOORD2 = 10; 
SEMANTIC_TEXCOORD3 = 11; 
SEMANTIC_TEXCOORD4 = 12; 
SEMANTIC_TEXCOORD5 = 13; 
SEMANTIC_TEXCOORD6 = 14; 
SEMANTIC_TEXCOORD7 = 15; 
SEMANTIC_TANGENT = 14; 
SEMANTIC_TANGENT0 = 14; 
SEMANTIC_BINORMAL0 = 15; 
SEMANTIC_BINORMAL = 15; 

의 목록입니다.

+0

[문제가 제기되었습니다] (https://github.com/turbulenz/turbulenz_engine/issues/30) – gman

+0

감사합니다. 내가 당신 께 신세를지는 거죠! 키보드가 당신의 힘있는 기술에 복종하기 때문에, 당신의 키 스트로크가 항상 힘과 힘으로 치기를 바랍니다. – Eric