|
|
因为windows位图是bgr格式,所以我使用了这个函数交换象素位置:
procedure SwapRGB(data: Pointer;Size: Integer);//size是象素个数
var
i: integer;
p: pchar;
tmp: byte;
begin
p := data;
for i := 1 to size do
begin
tmp := Byte(p^);
Byte(p^) := Byte((p+2)^);
Byte((p+2)^) := tmp;
p := p+3;
end;
end;
然后使用函数
glDrawPixels(BmpWidth,BmpHeight,GL_RGB,GL_UNSIGNED_BYTE,pBmp);将位图输入到显示缓存。此时图象不能正常显示。
如果我不交换象素位置,直接调用glDrawPixels(BmpWidth,BmpHeight,GL_RGB,GL_UNSIGNED_BYTE,pBmp);此时图象是正常的。
请问,问题的原因是什么?望赐教。 |
|