游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2313|回复: 6

关于纹理拷贝

[复制链接]

20

主题

65

帖子

65

积分

注册会员

Rank: 2

积分
65
发表于 2007-12-27 11:57:00 | 显示全部楼层 |阅读模式
我想实现多纹理,根据地形不同使用不同的纹理,看了看介绍,除了混合就是多遍渲染把,但是混合只能支持8层,似乎还要看硬件限制,多边渲染得话是不是效率有问题?而且程序也会比较复杂,我想把多个纹理都从文件中读取出来,然后建立一个新的纹理,根据某位置地形类型的不一样就把不同的纹理拷贝到我新建的纹理上,但是好像拷贝的时候有问题,总是告诉我该区域不能读。。。。不知道是什么问题,代码不再手边,回头贴上来,不知道各位大虾有知道这方面处理方法的马?
谢谢

35

主题

1735

帖子

1739

积分

金牌会员

Rank: 6Rank: 6

积分
1739
QQ
发表于 2007-12-27 21:41:00 | 显示全部楼层

Re:关于纹理拷贝

明白你的意思,就是根据地形地貌不同,从其相对应的各个纹理中生成一张组合后的纹理,这个技术早N年前就有人实现了嘛,所以原理上是没有问题的,出现的问题应该是你的代码哪里有错误,还是应该贴出来才能分析。

5

主题

755

帖子

757

积分

高级会员

Rank: 4

积分
757
发表于 2007-12-28 10:16:00 | 显示全部楼层

Re:关于纹理拷贝

你用那个函数拷贝的?看仔细看下sdk

20

主题

65

帖子

65

积分

注册会员

Rank: 2

积分
65
 楼主| 发表于 2007-12-28 19:26:00 | 显示全部楼层

Re:关于纹理拷贝

贴上代码;
IDirect3DTexture9* Tex_1 = 0;
IDirect3DTexture9* Tex_2 = 0;
IDirect3DTexture9* Tex = 0;
//读取文理
D3DXCreateTextureFromFileEx(
                                                                        Device,"greas.bmp",
                                                                        512,512,
                                                                        D3DX_FROM_FILE,0,
                                                                        D3DFMT_X8R8G8B8,   D3DPOOL_MANAGED,
                                                                        D3DX_FILTER_NONE,   D3DX_DEFAULT,
                                                                        0,   NULL,   NULL,   &Tex_1);
                D3DXCreateTextureFromFileEx(
                                                                        Device,"desert.bmp",
                                                                        512,512,
                                                                        D3DX_FROM_FILE,0,
                                                                        D3DFMT_X8R8G8B8,   D3DPOOL_MANAGED,
                                                                        D3DX_FILTER_NONE,   D3DX_DEFAULT,
                                                                        0,   NULL,   NULL,   &Tex_2);
                D3DXCreateTexture(
                Device,
                512, 512,
                0, // create a complete mipmap chain
                0, // usage
                D3DFMT_X8R8G8B8,// 32 bit XRGB format
                D3DPOOL_MANAGED, &Tex);
//拷贝
for (int i=0;i<512;i++){
                        for(int j=0 ;j<512;j++){
                                if (i>28 && i <32){
                                        memcpy(&Tex+(i*512+j),&Tex_1+(i*512+j),1);
                                }else {
                                        memcpy(&Tex+(i*512+j),&Tex_2+(i*512+j),1);
                                }
                        }
                }

35

主题

1735

帖子

1739

积分

金牌会员

Rank: 6Rank: 6

积分
1739
QQ
发表于 2007-12-28 20:28:00 | 显示全部楼层

Re:关于纹理拷贝

楼上,当然错了!Tex、Tex_1、Tex_2是IDirect3DTexture9接口的指针,不是纹理的像素数据,你考啥啊。[em21]-要理解IDirect3DTexture9,不要想当然,觉得怎么样,或者可能怎么样,要仔细看看它的SDK文档。

20

主题

65

帖子

65

积分

注册会员

Rank: 2

积分
65
 楼主| 发表于 2007-12-29 10:07:00 | 显示全部楼层

Re:关于纹理拷贝

那我如何才可以用这个指针访问到像素数据呢?

5

主题

755

帖子

757

积分

高级会员

Rank: 4

积分
757
发表于 2007-12-29 10:53:00 | 显示全部楼层

Re:关于纹理拷贝

lockrect纹理
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-6-18 07:24

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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