У меня есть 2 листа спрайтов 1024x1024, один из которых содержит несколько фоновых изображений 480x320, а другой содержит множество более мелких элементов, таких как объекты и интерфейс. Моя частота кадров падает, как камень, когда я вхожу в сцену, в которой мне приходится отображать спрайты с обеих текстур (вынуждая меня повторно связывать дважды за кадр, текстура интерфейса-> bg texture-> interface texture).
- (void)setCurrentTexture:(int)texID{
if(currentTex == texID)
return;
else
currentTex = texID;
// Bind the texture name.
glBindTexture(GL_TEXTURE_2D, [Graphics getTexture:texID]);
// Speidfy a 2D texture image, provideing the a pointer to the image data in memory
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, [Graphics getTexWidth:texID], [Graphics getTexHeight:texID], 0, GL_RGBA, GL_UNSIGNED_BYTE, [Graphics getTexData:texID]);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
}
Что-то не так с тем, как я меняю свои текстуры?
Редактировать: я удалил половину изменений состояния, которые я делал. Удаление любого из вышеперечисленных 3 приводит к тому, что мои многоугольники текстурируются ни с чем (то есть, изображение отображается белым). Самым большим препятствием является glTexImage2D ... но попытка установить его в другом месте один раз (например, в init) приводит к тому, что мои модели / квадроциклы вообще не текстурируются.