Opengl 切换glPixelStorei是一个缓慢的操作吗?

Opengl 切换glPixelStorei是一个缓慢的操作吗?,opengl,Opengl,我有很多不同格式的RBG、RBGA和ALPHA,加载纹理需要在1和4之间更改GL_UNPACK_对齐方式。这值得缓存吗?假设有一个变量“alignment”,并且仅当状态与始终调用glPixelStorei不同时才调用glPixelStorei 与纹理转换相同的想法。 嗯,让我们考虑一下。 每次更改GL\u PACK\u对齐,您也将调用glTexSubImage。这个函数充其量只能引发从客户端内存到OpenGL内部纹理内存的DMA操作。如果您没有使用PBOs,那么这也意味着该函数必须将该客户机内

我有很多不同格式的RBG、RBGA和ALPHA,加载纹理需要在1和4之间更改GL_UNPACK_对齐方式。这值得缓存吗?假设有一个变量“alignment”,并且仅当状态与始终调用glPixelStorei不同时才调用glPixelStorei


与纹理转换相同的想法。

嗯,让我们考虑一下。

每次更改
GL\u PACK\u对齐
,您也将调用
glTexSubImage
。这个函数充其量只能引发从客户端内存到OpenGL内部纹理内存的DMA操作。如果您没有使用PBOs,那么这也意味着该函数必须将该客户机内存复制到内部存储器中才能进行DMA。即使您使用的是PBO,您也必须在内存中执行复制操作

您是否真的认为更改包对齐状态将意味着除了您在之后立即执行的操作之外的任何性能方面的改进?您认为计算字形的位图或将位图数据上载到纹理会比更改该部分状态更快吗


不用担心。

通常,您希望最小化状态更改,但您真的在主显示循环中加载了大量纹理吗?如果您只在场景设置/加载期间调用它,我不会担心
glPixelStorei
的性能。目前,我正在渲染文本,在需要时上载文本。只影响对角色的第一次访问,而不是每一帧。我可能会考虑动态加载/卸载纹理前进。如果它没有发生任何频率,我会说这是不成熟的关注它。可能还有大约100件其他事情需要花费更多的时间。