2013-08-25 3 views
0

В настоящее время я загружаю текстуру с этим кодом:Создать MIPMAP изображение вручную (IOS OpenGL)

GLKTextureInfo * t = [GLKTextureLoader textureWithContentsOfFile:path options:@{GLKTextureLoaderGenerateMipmaps: [NSNumber numberWithBool:YES]} error:&error]; 

Но результат не так хорошо, когда я масштабируюсь вниз изображение (неровные края).

Могу ли я создать свою собственную mipmap с помощью программного обеспечения для изображений, такого как Adobe Illustrator? Но каково это правило? И как загрузить это изображение с помощью кода?

Спасибо!

- ред -

Спасибо за ответ, я получил его с помощью:

GLuint texName; 
glGenTextures(1, &texName); 
glActiveTexture(GL_TEXTURE0); 
glBindTexture(GL_TEXTURE_2D, texName); 
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR); 
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); 

// load image data here 
... 

// set up mipmap 
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 256, 256, 0, GL_RGBA, GL_UNSIGNED_BYTE, imageData0); 
glTexImage2D(GL_TEXTURE_2D, 1, GL_RGBA, 128,128, 0, GL_RGBA, GL_UNSIGNED_BYTE, imageData1); 
... 
glTexImage2D(GL_TEXTURE_2D, 8, GL_RGBA, 1, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, imageData8); 

ответ

3

Да, вы можете вручную сделать мип и загружать их самостоятельно. Если вы используете Illustrator, предположительно, у него есть способ вывода изображения с определенным разрешением. Я не знаком с Illustrator, поэтому не знаю, как эта часть работает.

Как только у вас есть различные разрешения, вы можете загрузить их как часть основного изображения. Вы можете использовать glTexImage2D(), чтобы загрузить исходное изображение в текстуру. Затем вы можете загрузить дополнительные уровни mipmap, используя glTexImage2D(), но устанавливая параметр уровня другим значениям. Например:

glTexImage2D (GL_TEXTURE_2D, level, etc...); 

, где level является уровнем мипмапа для этого конкретного изображения. Обратите внимание, что вы, вероятно, придется установить различные параметры текстуры соответственно для мипмапов, таких как:

glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_BASE_LEVEL, 0); 
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAX_LEVEL, <whatever the max is here>); 

section on mipmaps on this page Смотрите подробности.

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