我想將手機攝像頭的輸出流到屏幕上。如果使用IwGx將此輸出繪製到四邊形上,它會比寫入s3eSurfacePtr更快嗎?流攝像頭輸出到屏幕上:IwGx vs s3e
我聽說有人通過使用OpenGL將他們的2D圖像渲染成四邊形來創建遊戲,並且它更快(因爲GPU加速?)。有誰知道這是真的嗎?這似乎與我上面的問題類似。
我想將手機攝像頭的輸出流到屏幕上。如果使用IwGx將此輸出繪製到四邊形上,它會比寫入s3eSurfacePtr更快嗎?流攝像頭輸出到屏幕上:IwGx vs s3e
我聽說有人通過使用OpenGL將他們的2D圖像渲染成四邊形來創建遊戲,並且它更快(因爲GPU加速?)。有誰知道這是真的嗎?這似乎與我上面的問題類似。
是的,我一定會沿着IwGx的路線走下去。 s3eSurface在現代硬件上可能非常慢(例如特別是iOS平臺)。
首先創建一個CIwTexture實例,禁用mip貼圖並使其可修改。
CIwTexture* lpTexture = new CIwTexture;
lpTexture->SetModifiable(true);
lpTexture->SetMipMapping(false);
初始化回調方法
s3eCameraRegister(S3E_CAMERA_UPDATE_STREAMING, (s3eCallback) MyFrameDataCallback, NULL);
啓動相機運行,並要求它,當它接收到幀轉換爲RGB565。您應該根據使用情況改變所需的尺寸和質量提示。這有點試驗和錯誤,因爲它取決於硬件支持。
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,使其使用上述紋理並在屏幕上渲染紋理四邊形。我會把這段代碼留給你,因爲它非常直截了當!
非常感謝第1波,這是一個非常簡潔的分步指南,介紹如何使用IwGx方法來流式傳輸相機輸出 – chaindriver 2012-05-06 16:32:02