2010-08-31 4 views
1

Плохие новости всем!Быстрое рендеринг программного обеспечения на iOS

Я пытаюсь перенести старую игру Windows на iPad, и у меня есть проблема. Большая часть графики написана без аппаратного ускорения. В Windows он использует LockRect() вызов из класса IDirect3DSurface8, чтобы получить colorbuffer от backbuffer и написать некоторые графические данные. После этого он использует UnlockRect для отправки данных о пиксельных цветах в видео. Но OpenGL ES не обладает такой функциональностью. Я пытаюсь подражать этому. У меня есть массив, который я рисую каждый такт игры, используя glTexImage2D(), затем glDrawTexfOES(0, 0, 0, 1024, 768)

Но создание текстуры из массива каждый такт происходит слишком медленно. Как я могу сделать это намного быстрее? Заранее спасибо.

+0

Если вы вынимаете весь код записи графических данных, как быстро вы можете создать новую текстуру, используя glTexImage2D() для каждого кадра (или отметки)? Можете ли вы делать 30 или 60 кадров в секунду? – hotpaw2

+0

Код не подходит, поэтому его было бы трудно понять. Но могу сказать, что без создания текстуры каждый такт FPS почти удвоился. – XRazont

ответ

1

Попробуйте визуализировать текстурированный квадрат и используйте glTexSubImage2D() для повторной загрузки текстуры.

+0

Да, glTexSubImage2D просто заменяет данные, в то время как glTexImage2D перераспределяет данные. Это должно быть быстрее. –

Смежные вопросы