游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2874|回复: 8

菜鸟的图像像素问题!

[复制链接]

6

主题

12

帖子

14

积分

新手上路

Rank: 1

积分
14
发表于 2004-5-18 15:44:00 | 显示全部楼层 |阅读模式
在16位下,LOCK一个页面后像素是怎么存放的?我怎么知道是555模式还是565模式?

我想写的程序是实现把离屏页面中的图像传送到后备缓冲页面中。
我在程序中LOCK离屏页面后,该怎么做?(我想一个一个像素的传送)


我用了memcpy函数(一行一行拷贝),运行没有问题,只是在按了
ALT+TAB键后就出错,我猜想应该是页面丢失的错误,可是我在
LOCK函数中加入了页面丢失的检测还是出现同一个错误。
望高手指点·

我看别人的程序运行中左上角都有多少FPS的显示,请问怎么做的?(不要笑,我本是
菜鸟)
[em3] [em14] [em16] [em24]

24

主题

229

帖子

229

积分

中级会员

Rank: 3Rank: 3

积分
229
发表于 2004-5-18 21:11:00 | 显示全部楼层

Re:菜鸟的图像像素问题!

blt好像只能传送整个离屏表面,不能一个像素一个像素传(除非你的离屏只有一个像素)。为什么想传一个像素,有什么意义?那样的话,lock后直接从内存复制就行了。不过就用没有硬件加速了。
我也是初学者,有不对的还多指教。

21

主题

53

帖子

55

积分

注册会员

Rank: 2

积分
55
发表于 2004-5-19 08:05:00 | 显示全部楼层

Re: 菜鸟的图像像素问题!

我用的是以下语句,但是错的.(注:离屏中的图像宽为19,高为41,Bitmap1为指向后备缓冲页面的指针,Bitmap2为指向离屏页面的指针.)
lpDDSBackSurface->Lock(NULL, &ddsd1, DDLOCK_WAIT, NULL);
lpDDOffScreen->Lock(NULL, &ddsd2, DDLOCK_WAIT, NULL);
BYTE *Bitmap1 = (BYTE*)ddsd1.lpSurface;
BYTE *Bitmap2 = (BYTE*)ddsd2.lpSurface;
for(y=0;y<41;y++)
{
     for(x=0;x<19;x++)
     {
             Bitmap1[x*2+y*ddsd1.lPitch]=Bitmap2[x*2+y*ddsd2.lPitch];
     }
}
帮帮我怎么解决? [em24]

0

主题

130

帖子

130

积分

注册会员

Rank: 2

积分
130
发表于 2004-5-19 16:54:00 | 显示全部楼层

Re:菜鸟的图像像素问题!

"LOCK一个页面后像素是怎么存放的?我怎么知道是555模式还是565?
..这应该是和"CreateDevice"中你传的参数有关系的.
"(我想一个一个像素的传送)"
...没这么做过,用BLT吧.
"FPS的显示,请问怎么做的?"
用一个记时器,记下这帧用了多少时间,求个倒数就是FPS了,然后现实出来.
我DDRAW用的不多,其实D3D用起来更方便.显示2D也没有什么问题.使用正确,不会出现显示模糊等问题.



9

主题

31

帖子

31

积分

注册会员

Rank: 2

积分
31
发表于 2004-5-19 19:38:00 | 显示全部楼层

Re:菜鸟的图像像素问题!

哈哈,这个问题我正在搞!
做半透明时就用得上了!
16位时LOCK页面后,在内存中一个象素占两个字节,565格式下RGB的分布是RRRRRGGGGGBBBBB,555这种格式很少碰上!然后你想怎么处理就怎么处理,处理完后,直接内存拷贝到目标页面!你想一个一个像素或几个像素一起拷贝都可以!

21

主题

53

帖子

55

积分

注册会员

Rank: 2

积分
55
发表于 2004-5-20 09:02:00 | 显示全部楼层

Re: 菜鸟的图像像素问题!

我试了一下,只有这样写才正常显示。
for(y=0;y<41;y++)
{
     for(x=0;x<38;x++)
     {
           Bitmap1[x+y*(ddsd1.lPitch)]=Bitmap2
                     [x+y*ddsd2.lPitch)];
     }
}
为什么?
[em4] [em17]

27

主题

169

帖子

169

积分

注册会员

Rank: 2

积分
169
发表于 2004-5-20 11:30:00 | 显示全部楼层

Re: 菜鸟的图像像素问题!

源代码

sf_2004520112957.rar

5.02 KB, 下载次数:

21

主题

53

帖子

55

积分

注册会员

Rank: 2

积分
55
发表于 2004-5-20 12:31:00 | 显示全部楼层

Re: 菜鸟的图像像素问题!

像素分离已经搞定。
请问怎么为一个像素加亮度? [em2]

30

主题

298

帖子

299

积分

中级会员

Rank: 3Rank: 3

积分
299
QQ
发表于 2004-5-20 15:15:00 | 显示全部楼层

Re: Re: 菜鸟的图像像素问题!

pp123321: Re: 菜鸟的图像像素问题!

我试了一下,只有这样写才正常显示。
for(y=0;y<41;y++)
{
     for(x=0;x<38;x++)
     {
    ...


因为你的源和目标指针都是BYTE型的,对BYTE型的指针索引乘2却只复制了8位的数据,所以图像应该出现了隔列显示的情况。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-7-1 01:38

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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