游戏开发论坛

 找回密码
 立即注册
搜索
查看: 3261|回复: 7

哪位知道把一个HDC上的位图写进一个D3D的纹理中?我看过一

[复制链接]

4

主题

21

帖子

34

积分

注册会员

Rank: 2

积分
34
发表于 2006-12-6 15:22:00 | 显示全部楼层 |阅读模式
D3DLOCKED_RECT d3dlr;
        g_pTexture->LockRect(0, &d3dlr, NULL, D3DLOCK_NOSYSLOCK);
        BYTE * pDstRow = (BYTE*)( (WORD *)d3dlr.pBits );

        for (DWORD y=0; y<_TextSize; y++)
        {
                WORD * pDst16 = (WORD*)pDstRow;
                for (DWORD x=0; x<_TextSize; x++)
                {
                        BYTE bAlpha = (BYTE)((_pBits[_TextSize * y + x] & 0xff) >> 4);
                        if (bAlpha > 0)
                                *pDst16++ = (bAlpha << 12) | 0x0fff;
                        else
                                *pDst16++ = 0x0000;
                }
                pDstRow += d3dlr.Pitch;
        }
        g_pTexture->UnlockRect( NULL );
这个是千里马肝的文章中的一段代码.哪位帮我看看啊

35

主题

1735

帖子

1739

积分

金牌会员

Rank: 6Rank: 6

积分
1739
QQ
发表于 2006-12-6 17:04:00 | 显示全部楼层

Re:哪位知道把一个HDC上的位图写进一个D3D的纹理中?我看

直接问他本人即可

4

主题

21

帖子

34

积分

注册会员

Rank: 2

积分
34
 楼主| 发表于 2006-12-6 17:30:00 | 显示全部楼层

Re:哪位知道把一个HDC上的位图写进一个D3D的纹理中?我看

他本人在哪里啊??

35

主题

1735

帖子

1739

积分

金牌会员

Rank: 6Rank: 6

积分
1739
QQ
发表于 2006-12-6 17:36:00 | 显示全部楼层

Re:哪位知道把一个HDC上的位图写进一个D3D的纹理中?我看

他不是C++版块的斑竹吗?你发个帖,喊他出来,他不出来就威逼利诱,反正把他框出来就是了。

35

主题

1735

帖子

1739

积分

金牌会员

Rank: 6Rank: 6

积分
1739
QQ
发表于 2006-12-6 17:36:00 | 显示全部楼层

Re:哪位知道把一个HDC上的位图写进一个D3D的纹理中?我看

恩,楼上说的有道理啊。

8

主题

310

帖子

311

积分

中级会员

Rank: 3Rank: 3

积分
311
QQ
发表于 2006-12-6 21:44:00 | 显示全部楼层

Re:哪位知道把一个HDC上的位图写进一个D3D的纹理中?我看

千里马肝的文章
在哪有?
正找呢

8

主题

716

帖子

716

积分

高级会员

Rank: 4

积分
716
发表于 2006-12-7 10:32:00 | 显示全部楼层

Re:哪位知道把一个HDC上的位图写进一个D3D的纹理中?我看

是陈年的旧帐了

不知道LZ的看不懂是指哪里,这里大致说一下要点
因为用的是4444格式的texture,所以这里用的是WORD *
由于RGBA各占4位,下面这行用来取出WORD中alpha的数值
BYTE bAlpha = (BYTE)((_pBits[_TextSize * y + x] & 0xff) >> 4);

PS,以现在的眼光来看,这样lock住texture写东西是不好的,最好还是操作一块system memory,然后update上去会比较合适

4

主题

21

帖子

34

积分

注册会员

Rank: 2

积分
34
 楼主| 发表于 2006-12-13 14:37:00 | 显示全部楼层

Re: 哪位知道把一个HDC上的位图写进一个D3D的纹理中?我看

多谢你来亲自帮我解答问题,我是个刚刚开始入行的人,这里的很多变量我都不知道代表什么.
BYTE * pDstRow = (BYTE*)( (WORD *)d3dlr.pBits + tY * _TextureSize + tX );这句是什么意思啊.
还有,我试着把位图建立为16*3,16大小,想容纳3个汉字,然后在填充的时候改成了这样,
for (DWORD y=0; y<_TextSize; y++)
{
WORD * pDst16 = (WORD*)pDstRow;
for (DWORD x=0; x<16*3; x++)
{
............
结果是,显示了3个模糊的东西,看上去不像是汉字了.
这是怎么回事呢?正确的方法又应该怎么做呢?
请千里马学长帮我回答啊.实在是真的很感谢!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-1-26 02:01

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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