Привет, у меня есть 35 изображений для рисования на дисплее. Я рисую в сетке 7х5. Изображения скачаны из интернета. Каждый раз, когда загружается изображение, я пытаюсь нарисовать все 35 изображений. Но некоторые из них еще не загружены. Поэтому вместо этого я рисую для них плитку по умолчанию. Проблема в том, что каждый раз, когда загружается изображение, я снова рисую ранее нарисованные изображения. Я хочу уменьшить его. Поэтому я подумал о том, чтобы сделать что-то вроде Атласа текстур. Я пытаюсь сделать это вручную. Я делаю это, создавая большое изображение с помощью glTexImage2D
и добавляя к нему части изображения с помощью glTexSubImage2D
.
glGenTextures(1, tex);
glBindTexture(GL_TEXTURE_2D, (*tex));
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
glTexImage2D(GL_TEXTURE_2D, 0, textureImageInfo->format, textureImageInfo->texWidth, textureImageInfo->texHeight, 0, textureImageInfo->format, GL_UNSIGNED_BYTE, NULL);
glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, textureImageInfo->imageWidth, textureImageInfo->imageHeight, textureImageInfo->format, GL_UNSIGNED_BYTE, textureImageInfo->image);
Я вызываю 35 glTexSubImage2D
, чтобы добавить все 35 изображений в большой glTexImage2D
. Здесь я написал только один для облегчения объяснения. Тогда, наконец, я делаю
glEnable(GL_TEXTURE_2D);
glEnableClientState(GL_VERTEX_ARRAY);
glEnableClientState(GL_TEXTURE_COORD_ARRAY);
glVertexPointer(3, GL_FLOAT, 0, this->tileCoordList);
glTexCoordPointer(3, GL_FLOAT, 0, this->tileTextureCoordList);
glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);
glDisableClientState(GL_VERTEX_ARRAY);
glDisableClientState(GL_TEXTURE_COORD_ARRAY);
glDisable(GL_TEXTURE_2D);
Теперь меня смущает то, что мне нужно генерировать и связывать текстуры 35 раз для 35 вызовов glTexSubImage2D
?? Или достаточно сделать один раз. Настоящая проблема, я не понимаю, что связывает текстуру с ней. Спасибо.
glTexSubImage2D
. - person Tahlil   schedule 08.03.2013glTexSubImage
заполняет часть вашей текстуры. - person rhashimoto   schedule 08.03.2013