我正在开发一个 opengl 应用程序。我使用了 opengl 函数:glCompressedTexImage2D(),以 ASTC 纹理压缩格式上传视频帧纹理。在GPU支持opengl扩展:GL_KHR_texture_compression_astc_ldr,压缩纹理格式为:GL_COMPRESSED_RGBA_ASTC_8x8_KHR的手机上运行良好,上传时间约为每帧2ms。
我想用opengl 4.5和Nvidia GTX 750硬件将应用程序移植到Windows平台,发现上传成功,但上传时间太长,每帧大约200ms~300ms。我查看了硬件数据库:http ://delphigl.de/glcapsviewer/listreports.php ,发现 GTX 750 不支持GL_KHR_texture_compression_astc_ldr扩展。然后我使用了 Intel(R) HD Graphics 530,它支持GL_KHR_texture_compression_astc_ldr扩展,上传时间约为每帧 2ms。所以我想知道为什么 Nvidia GTX 750 可以成功上传 ASTC 纹理但要花费这么多时间,有没有办法使用 Nvidia GTX 750 在正常时间(每帧 2 毫秒)上传 ASTC 纹理。Intel(R) HD Graphics 530无法支持复杂的 3D 应用程序。
这是上传代码:
glCompressedTexImage2D(GL_TEXTURE_2D,
0,
compressed_data_internal_format,
xsize,
ysize,
0,
n_bytes_to_read,
astc_data_ptr);
GL_CHECK(glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR));
GL_CHECK(glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR));
GL_CHECK(glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT));
GL_CHECK(glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT));