游戏开发论坛

 找回密码
 立即注册
搜索
查看: 1583|回复: 4

关于地图多纹理问题

[复制链接]

20

主题

65

帖子

65

积分

注册会员

Rank: 2

积分
65
发表于 2007-12-19 08:21:00 | 显示全部楼层 |阅读模式
我做的地图 48*48德,建立了顶点数组合索引数组,然后附上材质。
现在贴上了草地图片了,不过呢,我还想贴其他的图片,比如沙漠,不知道怎么贴,请问那位高手可以指点一下。
        Device->CreateVertexBuffer(
                                                                        rowidth*colheight * sizeof(Vertex), // size in bytes
                                                                        D3DUSAGE_WRITEONLY, // flags
                                                                        D3DFVF_XYZ |  D3DFVF_TEX1,        // vertex format
                                                                        D3DPOOL_MANAGED,    // managed memory pool
                                                                        &MyTr,          // return create vertex buffer
                                                                        0);                 // not used - set to 0

                Device->CreateIndexBuffer( 6 * sizeof(WORD)*rowidth*colheight,
                                                                        D3DUSAGE_WRITEONLY,
                                                                        D3DFMT_INDEX16,
                                                                        D3DPOOL_MANAGED,
                                                                        &MyIn,
                                                                        0);

D3DXCreateTextureFromFile(
                                Device,
                                "greas.bmp",
                                //"dx5_logo.bmp",
                                &Tex);

                Vertex* mymap;
                MyTr->Lock(0,0,(void **) &mymap,0);
/*
                mymap[0]=Vertex(-1.0f, 0.0f, 2.0f);
               
                mymap[1]=Vertex(0.0f, 1.0f, 2.0f);
                mymap[2]=Vertex(1.0f, 0.0f, 2.0f);
                mymap[3]=Vertex(0.0f, 1.0f, 1.0f);*/
               
                for (int i=0;i<rowidth;i++){
                        for (int j=0;j<colheight;j++){
                                mymap[i*rowidth+j]=Vertex(i*1.0f-rowidth/2,12.0f,j*1.0f-colheight/2,
                                                                        (float)i/rowidth,(float)j/colheight);
                        }
               
                }

                MyTr->Unlock();
                WORD* indexs;
                MyIn->Lock(0,0,(void **)&indexs,0);

                /*indexs[0]=0;indexs[1]=1;indexs[2]=2;
                indexs[3]=1;indexs[4]=2;indexs[5]=3;*/
                int bi=0;
                for (int i=0;i<rowidth;i++){
                        for (int j=0;j<colheight;j++){
                                indexs[bi]     =   i   * rowidth + j;
                                indexs[bi + 1] =   i   * rowidth + j + 1;
                                indexs[bi + 2] = (i+1) * rowidth + j;

                                indexs[bi + 3] = (i+1) * rowidth + j;
                                indexs[bi + 4] =   i   * rowidth + j + 1;
                                indexs[bi + 5] = (i+1) * rowidth + j + 1;


                                bi+=6;
                        }
               
                }

                MyIn->Unlock();


        //        Device->SetRenderState(D3DRS_FILLMODE, D3DFILL_WIREFRAME);
                Device->SetTexture(0, Tex);

                Device->SetSamplerState(0, D3DSAMP_MAGFILTER, D3DTEXF_LINEAR);
                Device->SetSamplerState(0, D3DSAMP_MINFILTER, D3DTEXF_LINEAR);
                Device->SetSamplerState(0, D3DSAMP_MIPFILTER, D3DTEXF_NONE);


                Device->SetRenderState(D3DRS_LIGHTING, false);


                Device->SetStreamSource(0,MyTr,0, sizeof(Vertex));
                Device->SetIndices(MyIn);
                Device->SetFVF( D3DFVF_XYZ |  D3DFVF_TEX1);
               
        //        Device->DrawIndexedPrimitive(D3DPT_TRIANGLELIST, 0, 0,64*64,0,64*64);
                Device->DrawIndexedPrimitive(D3DPT_TRIANGLELIST, 0, 0,64*64,0,64*64);
                //wzb end 定点设计

                Device->EndScene();
               
                Device-&gtresent(0, 0, 0, 0);
                MyTr->Release();
                Tex->Release();
                MyIn->Release();

20

主题

65

帖子

65

积分

注册会员

Rank: 2

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

Re:关于地图多纹理问题

up

2

主题

132

帖子

132

积分

注册会员

Rank: 2

积分
132
发表于 2007-12-19 18:45:00 | 显示全部楼层

Re:关于地图多纹理问题

使用纹理混合, 最好用shader吧

35

主题

1735

帖子

1739

积分

金牌会员

Rank: 6Rank: 6

积分
1739
QQ
发表于 2007-12-23 17:10:00 | 显示全部楼层

Re:关于地图多纹理问题

要是固定管线的话使用多纹理混合,或多遍渲染。前者要硬件的支持,我的显卡只支持2层,泪。

20

主题

65

帖子

65

积分

注册会员

Rank: 2

积分
65
 楼主| 发表于 2007-12-24 12:13:00 | 显示全部楼层

Re:关于地图多纹理问题

我觉得多边渲染比较好
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-6-17 22:13

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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