游戏开发论坛

 找回密码
 立即注册
搜索
查看: 1434|回复: 0

有个地方弄不明白

[复制链接]

2

主题

3

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2005-6-20 00:23:00 | 显示全部楼层 |阅读模式
因为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);此时图象是正常的。
请问,问题的原因是什么?望赐教。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-12-26 02:12

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表