【发布时间】:2019-04-12 13:30:34
【问题描述】:
我正在使用 SFML 中的 Uint8 像素数组,并尝试将它们全部更新为显示为白色/0xFF/255 作为测试,但由于某种原因,使用 for 循环什么也没做,我不知道为什么,逻辑应该是完全合理的。
使用 memset() 将每个字节设置为 0xFF 效果很好,但运行时偶尔会向我抛出 EXC_BAD_ACCESS。将数组中单个像素的每个 RGBA 设置为 0xFF 效果很好,我在屏幕上的正确位置得到一个白点。但是使用for循环将每个像素设置为0xFF什么都没有,没有错误,但没有结果,这是没有意义的。
// Create buffer
sf::Uint8 *buffer = new sf::Uint8[SCREEN_WIDTH*SCREEN_HEIGHT*4];
for(int i; i < SCREEN_WIDTH*SCREEN_HEIGHT*4; i+=4) {
buffer[i] = 0xFF;
buffer[i+1] = 0xFF;
buffer[i+2] = 0xFF;
buffer[i+3] = 0xFF;
}
从逻辑上讲,这个 for 循环应该可以完美运行,但它没有,当我运行它时,我有一个黑屏,中间散布着一些绿点(来自正在使用的内存位置的垃圾)。如果有人能向我解释为什么会发生这种情况以及如何解决它,我将不胜感激!
【问题讨论】:
-
i的初始值是多少?投票以拼写错误结束 -
顺便说一句,如果您将所有像素设置为相同的值,则无需手动展开循环