안녕하세요. 오랜만에 또 글을 올리네요.
제가 지금 개발 하는 것은
native영역에서 동영상을 glDrawXXXX로 출력 하도록 하는 것 입니다.
현재 ffmpeg -> sdl 2.0에서 동영상을 재생 시키는 것은 가능 한데요.
문제는 sdl 2.0이 yuv 데이타를 rgb로 변환을 소프트적으로 처리 후 glDrawXXXX 시키고 있었습니다.
그래서 출력 부분에서 sdl 2.0을 이용하지 않고
직접 yuv 데이타를 glDrawXXXX시키려고 하는데요.
이게 어렵더군요. 도대체가 opengles2를 이해 못하겠더군요 ㅠ.ㅠ
원하는 결과는 yuv 데이타를 glDrawXXXX 시키는 것 이지만
제가 opengles2를 이해하고자 동영상의 rgb 데이타를 화면에 보여 지도록 하고
또한 yuv 데이타를 화면에 보여지도록 하고 싶습니다.
도대체 rgb 데이타를 어떻게 glDrawXXX 시켜서 화면에 보이게 하는 것인지요?
이 부분만 벌써 2주가 되어 가네요.....
이것만 하면 다 되는 것인데요... ㅠ.ㅠ
rgb 데이타를 glDrawXXX 시키는 방법좀 알려 주세요 ㅠ.ㅠ
정점세이더, 프로그먼트세이더 ... ㅠ.ㅠ 도대체 모르겠네요.
여기 저기 나와 있는 소스를 이용해 봐도 모르겠네요.....
화면에 출력이 안되니까요 ㅠ.ㅠ
opengles 2.0 프로그래밍 가이드 예제는 다 실행해 보았지만...
어떻게 이용해야 할지 모르겠네요.... 도와 주세요 ㅠ.ㅠ
참고로 sdl 2.0 내부에서 rgb를 glDrawXXXX 시키고 있던데요... 프레임버퍼인지를 사용하고 있는듯 보이더군요.
이건 더욱 모르겠더라구요 ㅠ.ㅠ
어떻게 해야 할까요?




예전에 yuv 스트림을 opengl 로 출력하는 비슷한 경험이 있어서 한 말씀 드리면,
yuv 데이터 형식을 rgb 로 변환하는 로직을 우선 정립하시고,
해당 로직을 "프래그먼트 쉐이더" 언어로 구현하면 됩니다.
쉐이더는 OpenGL ES 2.0 를 공부하시면 됩니다.(과제가 과제이니 만큼 거의 마스터 하는 수준이 필요합니다 orz)
좀더 자세히 말씀드리자면, opengl 에서 binary 데이터는 항상 texture 형태로만 존재하므로
yuv 를 텍스쳐화 해서 gl 로 올려주고, gl 에서는 그렇게 받은 yuv 텍스쳐를 이용해서 rgb 값을 계산해내는
프래그먼트 쉐이더를 짜는 겁니다.
프레임 버퍼를 직접 제어하는 쪽은 잘 모르겠습니다.