Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Non power of two textures in iOS

Tags:

ios

opengl-es

In my iOS app (targeted for iPad), I'd like to use non power of two (NPT) textures. My GL_VERSION query returns "OpenGL ES 2.0 APPLE". According to the spec, it should support NPT textures, but a simple test shows that I need to resize the texture to 2^N before it shows up.

Does Apple not support the full ES 2.0 spec? Where can I find documentation on what is not supported?

I am using Xcode 4.3.2 and iOS 5.1.

Edit:

A closer look at the ES 2.0.25 spec (section 3.8.2), reveals that there are a few conditions to be met for NPOT to work. Essentially if I use the settings below, I am able to load NPOT textures:

// use linear filetring glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);  glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR); // clamp to edge glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); 

Should I close this or answer my own question?

like image 276
M-V Avatar asked Jun 17 '12 06:06

M-V


1 Answers

As mentioned in my edit, I found the solution. NPOT on ES 2.0 requires that you use linear filtering and clamp to edge. Also, no mipmaps.

like image 115
M-V Avatar answered Sep 18 '22 17:09

M-V