Я пытался использовать разные для рендеринга игрового поля.Сначала я создаю текстуру и загружаю ее в графический процессор.
void initialize(float width,float height)
{
for(int i = 0;i < 10;i++)
{
glActiveTexture(GL_TEXTURE1 + i);
GLuint gridTexture;
glGenTextures(1, &gridTexture);
glBindTexture(GL_TEXTURE_2D, gridTexture);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
setPngTexture(gameMap->texture);
glGenerateMipmap(GL_TEXTURE_2D);
}
}
Затем я использую текстуры при рендеринге в каждом кадре.
void render() const
{
for(int i = 0; i < map -> maps.size();i++)
{
glUniform1i(uniforms.Sampler,i);
glBindBuffer(GL_ARRAY_BUFFER, gameMap -> verticesbuffer);
glVertexAttribPointer(position, 3, GL_FLOAT, GL_FALSE, stride, 0);
glVertexAttribPointer(normal, 3, GL_FLOAT, GL_FALSE, stride, offset);
glVertexAttribPointer(texture, 2, GL_FLOAT, GL_FALSE, stride, texCoordOffset);
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, gameMap -> indicesbuffer);
glDrawElements(GL_TRIANGLES, gameMap -> indexCount, GL_UNSIGNED_SHORT, 0);
}
}
Код работает правильно на симуляторе iPhone, но когдаЯ тестирую приложение на устройстве, оно дает мне очень низкую частоту кадров: 2 кадра в секунду.Если я изменю строку glUniform1i(uniforms.Sampler,i);
на glUniform1i(uniforms.Sampler,0);
, приложение будет работать нормально!
Я новичок в OpenGL ES и не уверен, что правильно использую несколько текстур.Кто может сказать мне, в чем причина этой проблемы и как я могу ее исправить?Большое спасибо!