iOS上存储的OpenGL纹理在哪里?

时间:2013-07-19 14:32:10

标签: ios ipad opengl-es opengl-es-2.0 textures

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真的能够做到这一点?

2 个答案:

答案 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,依此类推