2

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

4

2 回答 2

2

纹理存储在服务器空间中。因此,驱动程序可能会优化空缓冲区并且在您确实需要将一些数据放入其中之前不会创建它们。

iPad 肯定无法存储 225GiB 的纹理。:)

编辑:glAreTexturesResident已弃用。我不知道有任何替代品

于 2013-07-19T14:38:18.960 回答
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,依此类推

于 2014-12-03T03:19:07.040 回答