(Pygame / SDL表面c扩展名)复制像素时交换的像素值

时间:2016-11-01 08:55:23

标签: python pygame sdl python-c-extension

我正在尝试编写一个三角形光栅化器,并且正确的像素值存在问题。当将像素值从一个表面放到另一个表面时,我使用缓冲(/直接)像素访问。我的问题是,当我“整个”整个图像。交换颜色值。

以下是结果图:

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,因为它们在同一台机器上?

我是否必须更改整个代码,或者这通常是一种有效,快速和肮脏的做事方式?

提前感谢您的帮助。

0 个答案:

没有答案