2013-04-02 5 views
1

libvpx (WebM 디코드 라이브러리)와 OpenGL ES 2.0 셰이더 (Android 용)에서 얻은 yuv 데이터를 결합하여 프로그래밍하고 있습니다.OpenGL ES 2.0에서 바이트 배열을 사용하는 GL_LUMINANCE

이들은 동일한 바이트 배열이지만이 경우 올바르게 그려지지 않습니다.

성공 :

// ex) unsigned char *p = yuv.y, yuv.u or yuv.v; 
for(int dy = 0; dy < hh; dy++){ 
    glTexSubImage2D(GL_TEXTURE_2D, 0, 0, dy, ww, 1, GL_LUMINANCE, GL_UNSIGNED_BYTE, p); 
    p += ww; 
} 

실패 : 나는 OpenGL을 잘 모르는니까

glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, ww, hh, GL_LUMINANCE, GL_UNSIGNED_BYTE, p); 

,이 이유를 이해하지 않습니다. 각 줄마다 glTexSubImage2D를 호출하면 성능이 저하 될 것이라고 생각합니다. 더 이상 개선 할 수 없는가?

답변

1

glTexSubImage2D에 전달할 데이터가 올바르게 정렬되어 있지 않습니다. 는 OpenGL ES 2.0에 대한 glTexSubImage2D Reference page에서

: glPixelStorei 설정

저장 매개 변수 GL_UNPACK_ALIGNMENT는 데이터가 클라이언트 메모리로부터 판독되는 방식에 영향을 미칩니다. 설명은 glPixelStorei를 참조하십시오.

데이터에서 한 번에 한 줄을 전달하면 각 줄이 올바르게 정렬되지 않아 호출이 성공할 수 있습니다.

+0

잘 작동합니다! 하루 종일이 문제에 대해 걱정했기 때문에 매우 기쁩니다. 감사! – Tank2005

+0

당신을 진심으로 환영합니다! – Rick77

관련 문제