gpt4 book ai didi

c++ - SDL_Surface::pixels 改变它的值

转载 作者:行者123 更新时间:2023-11-28 03:12:17 26 4
gpt4 key购买 nike

检查 SDL_LockSurface 函数的实现时我偶然发现了这个:

/* This needs to be done here in case pixels changes value */
surface->pixels = (Uint8 *)surface->pixels + surface->offset;

为什么 pixels 会改变它的值?难道,实际像素阵列的位置也发生了变化?

特别是,考虑一下:

SDL_LockSurface(sur);
Uint8* my_pixels = reinterpret_cast<Uint8*>sur->pixels;
SDL_UnlockSurface(sur);

现在,可以安全地假设 my_pixels 将始终指向表面的像素阵列,即 sur 当前指向的像素阵列,除非我释放它吗? (我几乎可以肯定,因为四处移动那些巨大的阵列似乎有点愚蠢,但仍然......也许我是愚蠢的......)

最佳答案

不,假设是不安全的。

“移动那些巨大的数组”并不涉及实际复制任何数据。发生变化的不是放置数据的物理地址(甚至可能在 GPU RAM 中),而是虚拟->物理映射。

关于c++ - SDL_Surface::pixels 改变它的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18112300/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com