开发者

about fast swapping texture on IOS opengl ES

i'm work on a buffer for load very large pictures ( screen size) to single surface. The idea is to animate a lot of pictures ( more than the video memory can store ) frame by frame.

I have create a code for make a buffer but i have a big problem with the loading time of bitmap.

开发者_如何学C

My code work a this :

  1. I load an array of local bitmap files path.

  2. I (think ) i preload my bitmap datas in memory. I'm using a thread for store a CGImageRef in an NSArray for all my picture ( 40 for moment )

  3. In a second thread, the code look another NSArray for determine if is empty of not, if is empty, i bind my cgimageRef to the video memory by creating textures. ( use sharedgroup for this) This array store the adress of 20 textures names, and it's use directly by openGL for draw the surface. this array is my (buffer)

When i play my animation, i delete old textures from my "buffer" and my thread ( at point 3) load a new texture.

It's work great, but is really slow, and after few second, the animation lack.

Can you help me for optimise my code ?


Depending on device and iOS version glTexImage is just slow. With iOS 4 performance was improved so that you can expect decent speed on 2nd gen devices too, and with decent I mean one or two texture uploads per frame... Anyway: Use glTexSubImage and reuse already created texture-IDs. Also, when using glTex(Sub)Image, try to use a texture-ID that wasn't used for rendering in that frame. I mean: add some kind of texture-ID-doublebuffering. I asume you do all your GL stuff in the same thread, if not change it.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜