青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

天行健 君子當(dāng)自強(qiáng)而不息

Working with Maps and Levels(13)

Creating the Auto Map Class

The auto map class I've developed for the book will load a cMesh object and compress
it into a flat version of the map. The flattened map is stored in a series of vertex
buffers. These vertex buffers use only the X-, Y-, and Z-coordinates of each
vertex plus a single diffuse color. This means that auto maps are compact and easy
to render. This also means that you can use alpha blending to overlay the map on
the screen without covering the crucial gaming action going on.

Each map section has an associated flag that defines whether it is visible. The class
allows you to enable or disable those visibility flags, and to make sure that the
player’s hard work is not in vain, save and load those visibility flags.

Enough talk; now check out the class declaration:

//-------------------------------------------------------------------------------------------
// The sVertex structure is a custom vertex structure than contains only the 3D coordinates.
// This is used to retrieve coordinate information from a mesh's vertex buffer.
//-------------------------------------------------------------------------------------------
typedef struct sVertex
{
    float x, y, z;
} *sVertexPtr;

typedef struct sMapVertex
{
    
float x, y, z;      // coordinate
    D3DCOLOR diffuse;   // map color
} *sMapVertexPtr;

#define AUTO_MAP_FVF    (D3DFVF_XYZ | D3DFVF_DIFFUSE)

/********************************************************************************************/

typedef 
class cAutoMap
{
private:
    
long    m_num_sections;
    
bool*   m_visible;                          // visibility of sections
    DIRECT3DVERTEXBUFFER9_PTR*  m_map_vb;       // map vertex buffer array

    IDirect3DVertexBuffer9*     m_arrow_vb;     

    D3DVIEWPORT9                m_viewport;     
// area to draw map
    cCamera                     m_camera;       

    
float                       m_scale;        // scale used to draw map

    
//////////////////////////////////////////////////////////////////////////////

public:
    cAutoMap()
    {
        m_num_sections  = 0;
        m_visible      = NULL;
        m_map_vb       = NULL;
        m_arrow_vb     = NULL;
        
        m_camera.rotate(1.57f, 0.0f, 0.0f); 
// point camera down
        set_viewport(0, 0, 100, 100);

        m_scale = 1.0f;
    }

    ~cAutoMap()
    {
        free();
    }

    
void free()
    {
        
if(m_map_vb)
        {
            
for(long i = 0; i < m_num_sections; i++)
                release_com(m_map_vb[i]);

            delete[] m_map_vb;
            m_map_vb = NULL;           
        }

        m_num_sections = 0;

        delete[] m_visible;
        m_visible = NULL;

        release_com(m_arrow_vb);
    }

    
long get_num_section()
    {
        
return m_num_sections;
    }

    
void set_viewport(long x_pos, long y_pos, long width, long height)
    {
        
// define an area to draw the map

        m_viewport.X      = x_pos;
        m_viewport.Y      = y_pos;
        m_viewport.Width  = width;
        m_viewport.Height = height;
        m_viewport.MinZ   = 0.0f;
        m_viewport.MaxZ   = 1.0f;
    }

    
void visible_section(long section)
    {
        
// enable a map section's visibility flag

        m_visible[section] = 
true;
    }
    
    
void invisible_section(long section)
    {
        
// disable a map section's visibility flag

        m_visible[section] = 
false;
    }

    
//////////////////////////////////////////////////////////////////////////////

public:
    
bool create(pcstr filename, long color);

    
bool load(pcstr filename);
    
bool save(pcstr filename);
    
    
void render(cCamera* old_camera,
                
float map_x_pos, float map_y_pos, float map_z_pos,
                
float num_arrows,
                
float* arrow_x_pos, float* arrow_z_pos, float* angle);
} *cAutoMapPtr;


From the start, you can see that I’ve defined two vertex structures. You use the first,
sVertex, to access the vertex coordinates from the source meshes. You use the
second vertex structure, sMapVertex, to store the map sections.

Following the vertex structures are a collage of variables. Notice the number of map sections in use, an array of vertex
buffers, an array of char variables used to mark sections of the map that are visible,
a viewport structure, a cCamera, a scaling factor variable, and a pointer vertex buffer.

You should be comfortable with everything except the pointer vertex buffer and the
scaling factor. To make things easier on you, a map being loaded is scaled down to a
workable size. When you render the auto map, you need to specify coordinates from
the large map scale, but the auto map class will scale them down to fit the small map.

For example, a map that is 1,024 units in width and depth is scaled down to 256
units in width and depth. In fact, all maps are scaled down to a size of 256 x 256,
regardless of their size in the .X file.

As for the pointer vertex buffer, I’ve added the capability to display an arrow
pointer that represents each character on the map. The arrow pointer points in the
direction each character is facing. This vertex buffer simply contains three points
and is rendered using a red diffuse color.

In addition to the class’s private variables, you must deal with the functions.

posted on 2007-12-10 15:31 lovedday 閱讀(213) 評(píng)論(0)  編輯 收藏 引用


只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。
網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問(wèn)   Chat2DB   管理


公告

導(dǎo)航

統(tǒng)計(jì)

常用鏈接

隨筆分類(178)

3D游戲編程相關(guān)鏈接

搜索

最新評(píng)論

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            在线观看的日韩av| 欧美成ee人免费视频| 免费视频一区| 久久精品国内一区二区三区| 欧美美女操人视频| 免费成人激情视频| 国内伊人久久久久久网站视频 | 亚洲午夜激情网站| 亚洲在线观看视频网站| 亚洲美女中出| 欧美顶级少妇做爰| 免费久久99精品国产自| 加勒比av一区二区| 久久成年人视频| 久久免费高清| 国产一区成人| 欧美一区二区三区四区在线观看| 国产日产欧美一区| 亚洲一区二区在线视频| 亚洲在线视频网站| 国产精品大全| 制服诱惑一区二区| 欧美一级在线播放| 国产精品色午夜在线观看| 日韩视频专区| 一本色道久久综合亚洲二区三区| 亚洲精选久久| 亚洲午夜黄色| 国产精品亚洲综合天堂夜夜| 亚洲一级二级| 欧美诱惑福利视频| 国产欧美91| 久久精品亚洲| 亚洲第一黄色网| 亚洲卡通欧美制服中文| 欧美国产日韩在线| 一区二区高清| 欧美伊人精品成人久久综合97 | 裸体素人女欧美日韩| 免费日韩av片| 一本一道久久综合狠狠老精东影业 | 欧美成人精品在线观看| 亚洲风情亚aⅴ在线发布| 欧美高清在线视频观看不卡| 亚洲黄网站在线观看| 国产精品99久久久久久久vr| 欧美三级午夜理伦三级中文幕 | 欧美精品久久久久久久久久| 亚洲精品日韩综合观看成人91| 国产精品一级二级三级| 西西裸体人体做爰大胆久久久| 亚洲精品美女免费| 欧美亚州一区二区三区| 午夜精品影院在线观看| 久久综合国产精品| 亚洲精选视频在线| 国产欧美日韩中文字幕在线| 久久综合久久综合这里只有精品| 欧美专区第一页| 91久久视频| 国产精品婷婷| 欧美大尺度在线观看| 亚洲天堂视频在线观看| 嫩草伊人久久精品少妇av杨幂| 国产三级精品三级| 欧美精品一区二区三区蜜桃| 亚洲欧美在线一区二区| 亚洲国产第一| 久久手机免费观看| 一本色道**综合亚洲精品蜜桃冫| 欧美福利视频在线| 亚洲欧美成人一区二区三区| 亚洲电影下载| 久久精品视频va| 亚洲视频视频在线| 亚洲精品久久久久久下一站 | 久久久久久欧美| 在线视频精品| 亚洲国产日韩欧美| 先锋影音国产一区| 一区二区免费在线观看| 在线日本欧美| 韩国av一区二区三区| 国产精品久久波多野结衣| 欧美成人影音| 美女91精品| 久久久久国色av免费观看性色| 免费观看日韩av| 欧美在线free| 亚洲一区二区在线观看视频| 亚洲第一色中文字幕| 国产欧美一区二区白浆黑人| 欧美色图麻豆| 欧美日韩一本到| 欧美巨乳在线| 欧美大胆成人| 欧美高清免费| 欧美成人中文| 欧美激情bt| 欧美成人xxx| 欧美成人国产| 欧美激情精品久久久六区热门| 91久久精品国产| 亚洲承认在线| 欧美日韩国产小视频| 久久综合婷婷| 嫩草伊人久久精品少妇av杨幂| 亚洲国产毛片完整版| 欧美黄色成人网| 欧美激情视频一区二区三区在线播放| 亚洲精品资源| 亚洲精品美女在线观看| 亚洲精品护士| 在线亚洲电影| 亚洲一区二区三区免费视频| 亚洲综合视频在线| 欧美一区二区精品| 久久久视频精品| 欧美.www| 亚洲人线精品午夜| 9久re热视频在线精品| 亚洲一区二区三区高清不卡| 亚洲尤物在线| 久久久久久久综合色一本| 久久影院亚洲| 欧美日韩一区二区三区视频| 国产精品vip| 好男人免费精品视频| 亚洲国产日韩欧美一区二区三区| 国产精品天天看| 精品9999| avtt综合网| 午夜精品一区二区三区四区| 久久av资源网站| 欧美mv日韩mv亚洲| 一区二区三欧美| 久久国产精品久久w女人spa| 免费视频久久| 国产精品婷婷| 亚洲激情专区| 欧美一级二区| 亚洲电影在线观看| 亚洲欧美激情一区| 欧美成年人视频| 国产日韩欧美成人| 亚洲激情自拍| 久久激情视频免费观看| 亚洲第一精品夜夜躁人人爽 | 一区二区电影免费在线观看| 午夜伦欧美伦电影理论片| 美女黄色成人网| 国产精品免费观看在线| 91久久香蕉国产日韩欧美9色| 狠狠入ady亚洲精品| 亚洲久久视频| 看片网站欧美日韩| 一区二区三区日韩精品视频| 久久精品欧美| 国产精品一区二区a| 亚洲毛片网站| 欧美成人精品影院| 欧美一级理论性理论a| 欧美日韩一区视频| 亚洲日本欧美在线| 久久综合久久美利坚合众国| 在线一区二区三区四区五区| 男人天堂欧美日韩| 国产一区二区三区久久悠悠色av| 国语自产在线不卡| 欧美一区在线视频| 日韩视频在线观看国产| 理论片一区二区在线| 狠狠色狠色综合曰曰| 欧美一区二区国产| 一本一本久久| 欧美日韩亚洲高清| 99re6这里只有精品视频在线观看| 99日韩精品| 欧美大成色www永久网站婷| 亚洲欧美综合国产精品一区| 欧美午夜电影在线| 亚洲午夜精品一区二区| 亚洲人成网站精品片在线观看 | 在线观看欧美一区| 久久久久久国产精品mv| 午夜精品久久久久久久久久久久久 | 久久激情综合网| 国产精品网站在线观看| 亚洲综合色网站| 一本色道久久综合亚洲91| 欧美日韩免费观看中文| 一本久久精品一区二区| 亚洲久久在线| 国产精品国产馆在线真实露脸| 国产亚洲一区在线| 久久久久久穴| 久久久夜夜夜| 亚洲啪啪91| 日韩午夜av电影| 国产精品高清免费在线观看|