OpenGL ES 2 iPad应用程序中存储的纹理在哪里?如何确定存储纹理的设备功能?我最初认为纹理存储在RAM中,但以下代码运行正常而不是导致溢出:
for(int i=0; i<3000; i++){ //Generate some textures and see when the space will run out
GLuint texture;
glGenTextures(1, &texture);
glBindTexture(GL_TEXTURE_2D, texture);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 768, 1024, 0, GL_RGBA, GL_UNSIGNED_BYTE, NULL);
NSLog(@"%i",glGetError());
}
我是以错误的方式创建这些纹理还是iPad真的能够做到这一点?
答案 0 :(得分:2)
纹理存储在服务器空间中。因此,驱动程序可能会优化空缓冲区,并且在您确实需要将一些数据放入其中之前不会创建它们。
iPad无法存储225GiB纹理。 :)
编辑: glAreTexturesResident
已弃用。我不知道有任何替代。
答案 1 :(得分:0)
有关确定功能的问题,请尝试以下方法:
GLint maxNum;
glGetIntegerv(GL_MAX_TEXTURE_IMAGE_UNITS, &maxNum);
GLint texturesMaxSize;
glGetIntegerv(GL_MAX_TEXTURE_SIZE, &texturesMaxSize);
NSLog(@"Max textures: %d",aValue);
NSLog(@"Max size: %d",texturesMaxSize);
如果最大尺寸为1024,则尺寸为1024 * 1024,依此类推