我刚刚看到一个包含代码的纹理示例:
GLubyte pixels[4 * 3] =
{
255, 0, 0, // Red
0, 255, 0, // Green
0, 0, 255, // Blue
255, 255, 0 // Yellow
};
// Use tightly packed data.
glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
每个像素另外存储一个填充组件并指定4字节对齐不是更好吗?
我对表演感兴趣。
非常感谢
答案 0 :(得分:1)
我正在玩它一段时间,并得出(预期)结论。如果加载原生像素格式(例如,RGB565或RGB5_A1),则有一点点(大约快10%)具有4字节对齐的像素。加载其他像素格式(RGB8或RGBA8)时,速度稍微快一点(如1%)。
这与PC级显卡相同,如果加载本机BGRA8(NVIDIA),对齐可能会有所不同,但如果驱动程序需要调整数据或执行位移,则不会做出如此大的不同。
我正在测试加载256x256 RGB纹理,3或4字节对齐,100次。在测试之间删除了纹理。测试包含glFlush()和glFinish(),因此不存在待定的无序操作。