Информация о девайсе от девайса:
Vendor: Imagination Technologies
Renderer: PowerVR MBXLite with VGPLite
Version: OpenGL ES-CM 1.1 (48)
Extensions:
GL_EXT_texture_filter_anisotropic
GL_EXT_texture_lod_bias
GL_IMG_read_format
GL_IMG_texture_compression_pvrtc
GL_IMG_texture_format_BGRA8888
GL_OES_blend_subtract
GL_OES_compressed_paletted_texture
GL_OES_depth24
GL_OES_draw_texture
GL_OES_framebuffer_object
GL_OES_mapbuffer
GL_OES_matrix_palette
GL_OES_point_size_array
GL_OES_point_sprite
GL_OES_read_format
GL_OES_rgb8_rgba8
GL_OES_texture_mirrored_repeat
Напоминаю, что VBO, DOT3 и другие веселые штуки входят в ядро OpenGL ES 1.1. (Оно аналогично ядру 1.5 (за небольшими, не очень критичными отличиями) обычного OpenGL, а вовсе не 1.1). Расширения OES - своего рода аналог ARB расширений. IMG - PowerVR Specific
Далее смотрим на слово VGPLite, гуглим его и крепко задумываемся, почему Apple отказалось предоставлять разработчикам GL_IMG_vertex_program (аналог соответсвующего ARB расширения). Лично для себя я так и не нашел ответа на этот вопрос.
perkap написал(а):Есть ФБО, но нет шейдеров.
Массово шейдеры (особенно на high-level языках) начали использоваться сравнительно недавно, но и без них (и на значительно более слабом железе) делались шедевры (в пяде случаев - даже по графике. Взять например id tech 3, на базе которого выходили (и очень хорошо покупались) десятки игр даже после появления SM2.0 карт. Активно начали использовать 3.0 только после массового появления 4.0 ускорителей. Сейчас правда очень многие уходят на SM4.0, одноко, черт возьми, ATI 5870 уже вышел. И не за горами выход монстра на чипе GT300. А это уже, простите, SM 5.0 карты. Но что-то я отвлекся - основная суть в том, что шейдеры это далеко не единственный способ давать красивую и быструю 3D графику
PS Железо у iPhone очень мощное, особенно на фоне PSP/NDS. По ряду причин, в основном исторических, у устройства своего рода проблемы с колличеством доступной памяти. Однако ею можно очень грамотно распоряжаться - использовать PVRTC текстуры, использовать VBO. Не плодить сущности Obj-C/C++ по принципу "чтоб было", не допускать повторной загрузки ресурсов, хранить ресурсы во флеш-памяти и грузить только по необходимости и т.д. и т.п. (а 3GS - видимо самая мощная портативная игровая консоль на рынке. Правда по стоимости очень приличного PC)
PPS. Очень важно:
a) собирать код под ARM, а не THUMB
и) математику на поздних стадиях лучше делать на inline-ассемблере с явным использованием VFP(своеобразный аналог SSE/SEE2). gcc-llvm конечно сравнительно не плохо умеет проводить векторизацию кода, одако это как раз тот момент, когда assembler сможет очень много дать.
Отредактировано crsib (2009-09-22 22:31:51)