2012-04-28 2 views
2

휴대 전화의 카메라 출력을 화면에 스트리밍하려고합니다. 이 출력이 IwGx를 사용하여 쿼드에 그려진다면 s3eSurfacePtr에 쓰는 것보다 빠를까요?화면으로 스트리밍 카메라 출력 : IwGx vs s3e

일부 사람들은 2 차원 이미지를 OpenGL을 사용하여 쿼드에 렌더링하여 게임을 만들었으며 GPU 가속 때문에 더 빠르다고 들었습니다. 그게 사실인지 아는 사람 있습니까? 이것은 위의 내 문제와 유사합니다.

답변

2

예, 분명히 IwGx 경로로 이동합니다. s3e 표면은 현대 하드웨어 (예 : 특히 iOS 플랫폼)에서 매우 느릴 수 있습니다.

시작하여 CIwTexture 인스턴스를 만들고 밉맵을 비활성화하고 수정 가능하게 만듭니다.

CIwTexture* lpTexture = new CIwTexture; 
lpTexture->SetModifiable(true); 
lpTexture->SetMipMapping(false); 

카메라 실행을 시작하고이 프레임을 수신 할 때 RGB565로 변환을 요청

콜백 메서드

s3eCameraRegister(S3E_CAMERA_UPDATE_STREAMING, (s3eCallback) MyFrameDataCallback, NULL); 
을 초기화한다. 사용법에 따라 요청한 크기와 품질 힌트를 변경해야합니다. 이것은 하드웨어가 지원하는 것에 의존하기 때문에 약간의 시행 착오입니다.

s3eCameraStart(S3E_CAMERA_STREAMING_SIZE_HINT_LARGEST, S3E_CAMERA_PIXEL_TYPE_RGB565_CONVERTED, S3E_CAMERA_STREAMING_QUALITY_HINT_HIGH); 

그런 다음 카메라 프레임 콜백 감촉

lpTexture->CopyFromBuffer(apFrame->m_Width, apFrame->m_Height, CIwImage::RGB_565, apFrame->m_Pitch, (uint8*) apFrame->m_Data, 0); 
lpTexture->Upload(); 

apFrame 첫번째 파라미터로서 콜백 함수로 전달되는 s3eCameraFrameData 구조에 포인터를 업데이트. 콜백이 끝나면 데이터가 사라지기 때문에 콜백에서 복사본을 만들어야하지만, 응용 프로그램의 루프마다 한 번만 수행되도록 업로드를 지연시킬 수 있습니다.

이제 CIwMaterial을 만들고 위의 텍스처를 사용하고 질감이있는 쿼드를 화면에 렌더링하면됩니다. 나는 그 코드를 여러분에게 그대로 남겨 둘 것입니다.

+0

Wave 1을 사용해 주셔서 감사합니다. IwGx 메서드를 사용하여 카메라 출력을 스트리밍하는 방법에 대한 간략한 단계별 가이드입니다. – chaindriver