我正在尝试编写一个三角形光栅化器,并且正确的像素值存在问题。当将像素值从一个表面放到另一个表面时,我使用缓冲(/直接)像素访问。我的问题是,当我“整个”整个图像。交换颜色值。
以下是结果图:
tux drawn with custom blit routine
以下是我的代码的简化版本:
src = PySurface_AsSurface(sobj);
dest = PySurface_AsSurface(dobj);
uint32_t* src_buff = (uint32_t*) src->pixels;
uint32_t* dest_buff = (uint32_t*) dest->pixels;
SDL_LockSurface(dest);
SDL_LockSurface(src);
int x, y;
for(y = 0; y < src->h; y++) {
for(x = 0; x < src->w; x++) {
uint32_t c = src_buff[y * src->w + x];
dest_buff[(y + y1) * dest->w + (x + x1)] = c;
}
}
SDL_UnlockSurface(src);
SDL_UnlockSurface(dest);
显然,曲面中的像素顺序是不同的,但是它们不应该都是big endian或little endian,因为它们在同一台机器上?
我是否必须更改整个代码,或者这通常是一种有效,快速和肮脏的做事方式?
提前感谢您的帮助。