??xml version="1.0" encoding="utf-8" standalone="yes"?>色综合久久久久,欧美午夜A∨大片久久,色青青草原桃花久久综合http://www.shnenglu.com/CK985/archive/2010/03/18/110024.htmlCKCKThu, 18 Mar 2010 08:57:00 GMThttp://www.shnenglu.com/CK985/archive/2010/03/18/110024.htmlhttp://www.shnenglu.com/CK985/comments/110024.htmlhttp://www.shnenglu.com/CK985/archive/2010/03/18/110024.html#Feedback1http://www.shnenglu.com/CK985/comments/commentRss/110024.htmlhttp://www.shnenglu.com/CK985/services/trackbacks/110024.html*开头表C注释,q行后面的字W串都忽?br>I*1
*---------------------- HEADER FIELD
I*1
#PLAYER V-整数
{游戏模式Q?-单hQ?-双h单边Q?-单h双边Q?-9KeyQ?-13Key}
无空?br>#GENRE V-字符?br>{曲风}
无空?br>#TITLE V-字符?br>{游戏标题}
无空?br>#ARTIST V-字符?br>{Noter}
无空?br>#BPM V-实数
{BPM标识}
无空?br>#PLAYLEVEL V-整数
{星}
无空?br>#RANK V-整数
{隑ֺ{Q?-EasyQ?-NormalQ?-HardQ?-Very Hard}
无空?br>#TOTAL V-整数
{音符L}
无空?br>#VOLWAV V-整数
{意义暂时不明}
无空?br>#STAGEFILE S-字符?br>{预览图文件\?直接跟文件名Q即相对路径Q跟BMS文g在同一文g?}
I*1
{?br>#WAVXX S-字符?/p>

XX-2?6q制敎ͼ标志此WAV编?br>S-文g路径(相对路径)
}
I*1
{?br>#BMPXX S-字符?/p>

XX-2?6q制敎ͼ标识此图资源~号
S-文g路径(相对路径)
注:(x)BPM00代表游戏时的LOGO
}
I*2Q其实我猜中间还有个东西Q不q没发现Q?br>{?br>#BPMXX V-实数

XX-2?6q制敎ͼ标识此BPM标签~号
V-此标{代表的BPM数?br>}
I*1
{?br>#STOPXX V-实数

XX-2?6q制敎ͼ标识此STOP标签~号
}
I*1
{?br>S-字符?/p>

Expand信息Q貌似没?br>}
I*3
*---------------------- MAIN DATA FIELD
I*1
{?br>  {?br>  #PPPTT:V
  PPP=节?/p>

  TT=记录cd
     01=WAV资源攄~号Q每一列分一?br>     03=16q制数值BPMQ当讄的BPM值小?56而且不是数Ӟ
     04=BGA
     06=POOR
     07=LAYER
     08=自定义BPM数值编?br>     09=STOPQ作用不?br>     11~16+18~19=8个按键,18为最左,11~16一ơ向叻I19为按键最后一列,数g?/p>

Key音WAV~号
     51~56+58~59=8个按键位|,对应长条的v始和l止点,跟上面的一?/p>


  V:讑֭W串长度为AQ则记录值将q个节分ؓ(f)A/2个时间点Q每个记录g2?6q制?/p>

存储Q若?0则表C忽?br>  }
每小节空?1
}
文gl束



CK 2010-03-18 16:57 发表评论
]]>
ってや?/title><link>http://www.shnenglu.com/CK985/archive/2010/01/23/106280.html</link><dc:creator>CK</dc:creator><author>CK</author><pubDate>Sat, 23 Jan 2010 06:31:00 GMT</pubDate><guid>http://www.shnenglu.com/CK985/archive/2010/01/23/106280.html</guid><wfw:comment>http://www.shnenglu.com/CK985/comments/106280.html</wfw:comment><comments>http://www.shnenglu.com/CK985/archive/2010/01/23/106280.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/CK985/comments/commentRss/106280.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/CK985/services/trackbacks/106280.html</trackback:ping><description><![CDATA[<a >http://www.nicovideo.jp/watch/sm8966268</a><br><br>q首歌很有感觉啊。。?br>以下是LRC歌词<br><br>[00:06.71]作詞QおにゅうP <br>[00:09.33]作曲QおにゅうP <br>[00:11.94]R曲QピノキオP <br>[00:14.55]歌:(x)初音ミク <br>[00:20.29]<br>[00:24.45]依偎在一L(fng) 帥哥與美?<br>[00:34.61]還有該死的現?詛咒你?<br>[00:45.02]<br>[00:45.24]Z麼這一條街?<br>[00:50.26]到處都滿盈著W臉Q?<br>[00:55.50]雖然是我這個孤單寂寞的?<br>[01:01.53]我還是要告訴大家 <br>[01:04.63]<br>[01:04.82]福你們 直到後世 <br>[01:09.65]g之時 參見M <br>[01:15.62]當天壽已盡時 <br>[01:21.17]全都i我L?<br>[01:25.16]福你?<br>[01:32.26]<br>[01:47.75]一起進來的同事也 <br>[01:52.76]Z家h拚命工作而得到晉?<br>[01:58.39]真的令h慕不已 <br>[02:03.40]詛咒你?<br>[02:08.44]<br>[02:08.60]Z麼這個國?<br>[02:13.67]到處都滿盈著W臉Q?<br>[02:18.85]雖然我什麼長處也沒有 <br>[02:24.10]我還是要告訴大家 <br>[02:27.87]<br>[02:28.05]福你們 直到後世 <br>[02:33.20]扑֥象 一L(fng)?<br>[02:39.19]還有可愛的小孩子 <br>[02:44.55]能夠圍繞在n?<br>[02:48.92]福你?<br>[02:53.63]<br>[03:01.74]工作都不順利 <br>[03:06.22]因為原本沒有工?<br>[03:11.40]讀怹讀不好 <br>[03:16.43]戀情也沒有M進展 <br>[03:21.79]不論是那樣的傢伙?br>[03:26.84]或者不是那樣的傢伙們也?<br>[03:32.79]我還是要告訴大家 <br>[03:37.27]全部都 全部都 全部都── <br>[03:41.09]<br>[03:41.32]福你們 直到後世 <br>[03:46.26]低頭哭泣的傢伙也 <br>[03:52.12]我都會祝你?<br>[03:57.31]所以抬起頭來吧 <br>[04:01.79]<br>[04:01.97]福你們 直到後世 <br>[04:07.36]g之時 參見M <br>[04:12.91]Z你們 今後來 <br>[04:18.57]的幸?i予福<br>[04:32.71]<br> <img src ="http://www.shnenglu.com/CK985/aggbug/106280.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/CK985/" target="_blank">CK</a> 2010-01-23 14:31 <a href="http://www.shnenglu.com/CK985/archive/2010/01/23/106280.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Sumreen(GAL GAME)引擎框架http://www.shnenglu.com/CK985/archive/2010/01/01/104602.htmlCKCKFri, 01 Jan 2010 06:03:00 GMThttp://www.shnenglu.com/CK985/archive/2010/01/01/104602.htmlhttp://www.shnenglu.com/CK985/comments/104602.htmlhttp://www.shnenglu.com/CK985/archive/2010/01/01/104602.html#Feedback3http://www.shnenglu.com/CK985/comments/commentRss/104602.htmlhttp://www.shnenglu.com/CK985/services/trackbacks/104602.html阅读全文

CK 2010-01-01 14:03 发表评论
]]>
NOIP2009前一?/title><link>http://www.shnenglu.com/CK985/archive/2009/11/20/101520.html</link><dc:creator>CK</dc:creator><author>CK</author><pubDate>Fri, 20 Nov 2009 13:50:00 GMT</pubDate><guid>http://www.shnenglu.com/CK985/archive/2009/11/20/101520.html</guid><wfw:comment>http://www.shnenglu.com/CK985/comments/101520.html</wfw:comment><comments>http://www.shnenglu.com/CK985/archive/2009/11/20/101520.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.shnenglu.com/CK985/comments/commentRss/101520.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/CK985/services/trackbacks/101520.html</trackback:ping><description><![CDATA[出征宣言Q决战成都!<br><br>好不Ҏ(gu)都走到这一步了Q怎么能在q种地方挂掉Q?br><br>可恶Q加油! <img src ="http://www.shnenglu.com/CK985/aggbug/101520.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/CK985/" target="_blank">CK</a> 2009-11-20 21:50 <a href="http://www.shnenglu.com/CK985/archive/2009/11/20/101520.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Direct3D中的?Dl制Q下Q——文字的l制http://www.shnenglu.com/CK985/archive/2009/09/10/95820.htmlCKCKThu, 10 Sep 2009 09:29:00 GMThttp://www.shnenglu.com/CK985/archive/2009/09/10/95820.htmlhttp://www.shnenglu.com/CK985/comments/95820.htmlhttp://www.shnenglu.com/CK985/archive/2009/09/10/95820.html#Feedback3http://www.shnenglu.com/CK985/comments/commentRss/95820.htmlhttp://www.shnenglu.com/CK985/services/trackbacks/95820.html?/span>Direct3D渲染中当然也不了文字。作为所有游戏最重要的一部分Q绘制文字的问题也成了非帔R要的一个话题。于是咱们接着研究关于文字的绘制。这部分学习(fn)完了以后Q咱们就?x)拥有一个有着基本朴实功能?/span>GraphEngine。可以绘制图片以?qing)文字以后,剩下的事便可以干完了?/span>

作ؓ(f)Direct3D中绘制文字的利器ID3DXFont有着完备的文字绘制功能。可是首先要说明的是Q?/span>ID3DXFont在绘制文字的时候用的?/span>GDI?/span>APIQ众所周知GDI是效率非怽下的东西。于是在q个基础上,DXUT提供了一个东西叫?/span>CDXUTTextHelperQ它?yu)装了需要的ID3DXFont以及(qing)SpriteQƈ提高了工作效率。那么具体是怎么提高的呢Q那是它在内存中开辟了一块纹理,绘制过的文字绘制在q上面,以后再次遇到q个字的时候就直接当做普通纹理处理了。这样做的代价就是内存的开销变大Q经q咱的测试,E_下来的大概会(x)占掉200-300MB的内存,即是在目前普及(qing)1G-2G内存的时代,q样的开销也算是非常巨大的Q因此汝可以?/span>ID3DXFont?/span>CDXUTTextHelper之间作出选择Q是牺牲I间换来旉q是牺牲旉换来I间。或者汝有更好的Ҏ(gu)请回复?/span>

 

那么接下来就是正题了Q这里以ID3DXFont解对象,CDXUTTextHelper跟这个类伹{?/span>

跟以前一样先来看构?/span>ID3DXFont的函数原型:(x)

HRESULT D3DXCreateFont(

 LPDIRECT3DDEVICE9 pDevice,

 INT Height,

 UINT Width,

 UINT Weight,

 UINT MipLevels,

 BOOL Italic,

 DWORD CharSet,

 DWORD OutputPrecision,

 DWORD Quality,

 DWORD PitchAndFamily,

 LPCTSTR pFacename,

 LPD3DXFONT * ppFont

);

pDevice:Direct3D讑֤

Height:字符的逻辑单位高度

Weight:字符的逻辑单位宽度

Weight:字符_细的枚NQ有以下几种Q?/span>

/* Font Weights */

#define FW_DONTCARE         0

#define FW_THIN             100

#define FW_EXTRALIGHT       200

#define FW_LIGHT            300

#define FW_NORMAL           400

#define FW_MEDIUM           500

#define FW_SEMIBOLD         600

#define FW_BOLD             700

#define FW_EXTRABOLD        800

#define FW_HEAVY            900

MipLevels:好吧p重咱也不知道q个是干啥的不过也不需要了解它是干啥的?/span>0好?/span>

Italic:是否斜体

CharSet:字体字符的设|,也就是一些字体的指定Q一般填DEFAULT_CHARSET

#define ANSI_CHARSET            0

#define DEFAULT_CHARSET         1

#define SYMBOL_CHARSET          2

#define SHIFTJIS_CHARSET        128

#define HANGEUL_CHARSET        129

#define HANGUL_CHARSET          129

#define GB2312_CHARSET          134

#define CHINESEBIG5_CHARSET     136

#define OEM_CHARSET             255

#if(WINVER >= 0x0400)

#define JOHAB_CHARSET           130

#define HEBREW_CHARSET          177

#define ARABIC_CHARSET          178

#define GREEK_CHARSET           161

#define TURKISH_CHARSET         162

#define VIETNAMESE_CHARSET      163

#define THAI_CHARSET            222

#define EASTEUROPE_CHARSET      238

#define RUSSIAN_CHARSET         204

OutputPrecision:指定Windows如何把指定的字体大小和实际的字体盔RQ一般填OUT_DEFAULT_PRECIS

#define OUT_DEFAULT_PRECIS          0

#define OUT_STRING_PRECIS           1

#define OUT_CHARACTER_PRECIS        2

#define OUT_STROKE_PRECIS           3

#define OUT_TT_PRECIS               4

#define OUT_DEVICE_PRECIS           5

#define OUT_RASTER_PRECIS           6

#define OUT_TT_ONLY_PRECIS          7

#define OUT_OUTLINE_PRECIS          8

#define OUT_SCREEN_OUTLINE_PRECIS   9

#define OUT_PS_ONLY_PRECIS          10

Quality:指定Windows如何把指定的字体和实际的字体盔RQ一般填DEFAULT_QUALITY

#define DEFAULT_QUALITY         0

#define DRAFT_QUALITY           1

#define PROOF_QUALITY           2

#if(WINVER >= 0x0400)

#define NONANTIALIASED_QUALITY 3

#define ANTIALIASED_QUALITY     4

PitchAndFamily:

Pitch:一个位囑ֆ存地址距下一个位囑ֆ存地址的距,一般填DEFAULT_PITCH

#define DEFAULT_PITCH           0

#define FIXED_PITCH             1

#define VARIABLE_PITCH          2

     Family:q个看注释就知道了,不知道的话就?span>FF_DONTCARE

       /* Font Families */

#define FF_DONTCARE         (0<<4) /* Don't care or don't know. */

#define FF_ROMAN            (1<<4) /* Variable stroke width, serifed. */

                                    /* Times Roman, Century Schoolbook, etc. */

#define FF_SWISS            (2<<4) /* Variable stroke width, sans-serifed. */

                                    /* Helvetica, Swiss, etc. */

#define FF_MODERN           (3<<4) /* Constant stroke width, serifed or sans-serifed. */

                                    /* Pica, Elite, Courier, etc. */

#define FF_SCRIPT           (4<<4) /* Cursive, etc. */

#define FF_DECORATIVE       (5<<4) /* Old English, etc. */

pFacename:字体名称的宽字符Ԍ例如L”Airia”

ppFont:ID3DXFontcd的指针,传入q去以此建立字体对象?/span>

 

 

?span>D3DXCreateFont可以创建各U各L(fng)字体了。那么如何在实际的程序运行中用多U字体呢Q你可以?span>map来管理,q样预处理出来是非常好的?/span>

在附件中的工E的GameEngine.cpp?span>OnCreateDevice中可以看见字体的初始化过E?/span>

 

字体对象建立好了后便是绘制了Q下面看一?span>ID3DXFont::DrawText:

INT DrawText(

 LPD3DXSPRITE pSprite,

 LPCTSTR pString,

 INT Count,

 LPRECT pRect,

 DWORD Format,

 D3DCOLOR Color

);

pSprite:ID3DXFont要借用Sprite来绘制文字,于是W一个参C入已l徏立好?span>sprite

pString:需要绘制的文字的宽字符?/span>

Count:需要绘制的文字的长度,若是-1则整个字W串一L(fng)Q否则按字数l制

pRect:指定一个矩形来让文字按Format格式在此矩Ş内排?/span>

Color:l制文字的颜?/span>

Format:l制文字的格式?span>ID3DFont提供了多L(fng)l制格式Q见下:(x)

注:(x)我的E序中已l将ID3DXFont装q?span>graphEngineQ具体参见代?/span>

 

DT_BOTTOM:指定在矩形底部绘?/span>

graphEngine->DrawTexts(L"Sumreen",MakeRect(0,0,200,200),DT_BOTTOM);

 

 

 

DT_CALCRECT:改变传入的矩形的长宽Q变成刚好能容下需要画文字的矩?/span>

 

 

 

DT_CENTER:指定在矩形的横向的中间绘?/span>

graphEngine->DrawTexts(L"Sumreen",MakeRect(0,0,200,200),DT_CENTER);

 

 

 

DT_EXPANDTABS:不忽略制表符l制(\t)Q一?/span>TAB?/span>8个位|?/span>

graphEngine->DrawTexts(L"\tSumreen",MakeRect(0,0,200,200),DT_EXPANDTABS);

 

 

DT_LEFT:指定横向在矩形的左侧l制

graphEngine->DrawTexts(L"Sumreen",MakeRect(0,0,200,200),DT_LEFT);

 

 

 

DT_NOCLIP:不作M格式限制?qing)裁剪,以矩形左上角为绘制点l制

graphEngine->DrawTexts(L"SumreenSumreenSumreenSumreen",MakeRect(0,0,50,200),DT_NOCLIP);

 

 

DT_RIGHT:指定在矩形右侧绘制文?/span>

graphEngine->DrawTexts(L"Sumreen",MakeRect(0,0,200,200),DT_RIGHT);

 

 

 

DT_SINGLELINE:在单行中l制Q忽略换行等

graphEngine->DrawTexts(L"Sumreen\nSumreen",MakeRect(0,0,200,200),DT_SINGLELINE);

 

 

 

DT_TOP:指定U向在矩形顶部绘?/span>

graphEngine->DrawTexts(L"Sumreen",MakeRect(0,0,200,200),DT_TOP);

 

 

 

DT_VCENTER:指定U向在矩形中间绘?/span>

graphEngine->DrawTexts(L"Sumreen",MakeRect(0,0,200,200),DT_VCENTER);

 

 

 

DT_WORDBREAK:指定在矩形中自动换行l制Q还可以换行以不切断单词

graphEngine->DrawTexts(L"Sumreen Sumreen Sumreen Sumreen Sumreen Sumreen Sumreen Sumreen",MakeRect(0,0,200,200),DT_WORDBREAK);

 

 

 

以上为常用的一些标C符Q如果需要更多信息请参?/span>DirectX SDK?/span>

其中汝觉得标C符不冲H就可以用或q算同时使用Q?/span>

 

graphEngine->DrawTexts(L"Sumreen",MakeRect(0,0,200,200),DT_RIGHT|DT_BOTTOM);

 

 

graphEngine->DrawTexts(L"Sumreen",MakeRect(0,0,200,200),DT_CENTER|DT_VCENTER);

 

 

 

其中常用的就?/span>DT_NOCLIP了,即不作Q何限?/span>

 

 

最后要注意的是因ؓ(f)ID3DXFont是用Sprite在绘制内存中的纹理式的文字,也就是相当于普通的l制U理Q于是一定要?span>Device?span>Sprite?span>Begin以及(qing)End之间再调?span>DrawText?/span>

 

以上是利用ID3DXFontl制文字的基内容。虽然说是基Q却也提供了非常多的实用的效果。对于制?span>GALGAME来说已经_了?/span>

 

Z再说一个经常用到的效果Q阴׃?qing)边?/span>

其实q个也不复杂Q就只是q移一两个单位像素按阴影颜色再l制一下就行了Q?/span>

graphEngine->DrawTexts(L"Sumreen",MakeRect(0,1,200,200),D3DCOLOR_ARGB(255,255,0,0),DT_NOCLIP);

graphEngine->DrawTexts(L"Sumreen",MakeRect(1,0,200,200),D3DCOLOR_ARGB(255,255,0,0),DT_NOCLIP);

graphEngine->DrawTexts(L"Sumreen",MakeRect(-1,0,200,200),D3DCOLOR_ARGB(255,255,0,0),DT_NOCLIP);

graphEngine->DrawTexts(L"Sumreen",MakeRect(0,-1,200,200),D3DCOLOR_ARGB(255,255,0,0),DT_NOCLIP);

graphEngine->DrawTexts(L"Sumreen",MakeRect(0,0,200,200),D3DCOLOR_ARGB(255,0,255,0),DT_NOCLIP);

 

 

 

graphEngine->DrawTexts(L"Sumreen",MakeRect(1,1,200,200),D3DCOLOR_ARGB(255,0,0,0),DT_NOCLIP);

graphEngine->DrawTexts(L"Sumreen",MakeRect(0,0,200,200),D3DCOLOR_ARGB(255,0,255,0),DT_NOCLIP);

 

 

 

嘛,文字的绘制就是这样了。现在绘制东西已l不成问题了Q于是下一ơ便开始讲整个引擎的框架?/span>

 

文章中可能会(x)有疏忽和错误之处Q也请大家不吝赐教?/span>


代码工程下蝲QVS2008Q:(x)
/Files/CK985/Direct3D_2D.rar


CK 2009-09-10 17:29 发表评论
]]>
Direct3D中的?Dl制Q上Q——纹理的l制http://www.shnenglu.com/CK985/archive/2009/08/10/92747.htmlCKCKSun, 09 Aug 2009 16:35:00 GMThttp://www.shnenglu.com/CK985/archive/2009/08/10/92747.htmlhttp://www.shnenglu.com/CK985/comments/92747.htmlhttp://www.shnenglu.com/CK985/archive/2009/08/10/92747.html#Feedback7http://www.shnenglu.com/CK985/comments/commentRss/92747.htmlhttp://www.shnenglu.com/CK985/services/trackbacks/92747.html上一ơ已l讲了DXUT的基本工作模式,汝在DirectX SDK里面把EmptyProject扑և来,然后把工E徏立好Q把include和lib{也配置Q可能有的不知道怎么配置Q咱q里q是说一下吧


若汝使用的是Visual SutdioQ那?工具->选项->目和解x?>VC++目录。右边在“包含文g”里加上DirectX SDK目录底下的include目录Q?#8220;库文?#8221;里加上DirectX SDK目录底下的lib/xXX目录Q若汝用的?2位机Q就选x86Q?4位机选择x64?span style="COLOR: #000000">若是其他IDEQ在pȝ环境变量里配|就好?/font>


现在汝按下F5Q就?x)出C?40*480的黑色的H口。这个就是DXUT底层完全准备好了Q就{汝q事儿了?br>
接下来咱们要q嘛Q很Ҏ(gu)惛_的就是画图。于是给汝介l一下在Direct3D中处?D囑փ的核心内容——Sprite

Sprite是Direct3D中处?D囑փ的十分便利的一个武器。它的用处就是绘制某张指定的U理Qƈ且可以加上简单的颜色化渲染?br>
HRESULT Draw(
  LPDIRECT3DTEXTURE9 pTexture,
  CONST RECT * pSrcRect,
  CONST D3DXVECTOR3 * pCenter,
  CONST D3DXVECTOR3 * pPosition,
  D3DCOLOR Color
);

Sprite::Draw函数的原型就是这栗不q这个函数必dSprite::Begin()和Sprite::End()q两个函C间才能用。这个Begin和End便是加在OnFrameRender()q个回调函数里面。那么下来我们细说这些参数?br>pTexture q个要传入需要绘制的U理对象的指?br>pSrcRect q个传入需要绘制纹理pTexture的哪一部分Q就是一个矩形限定框
pCenter 以pCenterZ心绘制纹?br>pPosition 以pPosition为左上角v始点l制
Color 用Color颜色来渲染此ơ绘?br>
利用q个函数咱就可以创造一个世界了~有图有真相。那么咱是如何创造这个世界呢Q?br>咱可以将q个函数装一下,让咱可以非常方便的用它?br>q_l制囄Q因Z存在3DQ所以咱需要的也就q几?br>texture 需要绘制的U理
srcRect l制U理的srcRect
darwRect 纹理的srcRect部分拉׾l制在屏q的drawRect部分
color 用color颜色来渲染此ơ绘?br>
于是咱就可以计划q单的囑Ş引擎Q虽然很陋)了。ȝZ列的装后的接口Q咱们将它们装q咱们的囑փ引擎Q也是GraphEngine:
class GraphEngine
{
    
public
        
//-------------------------l制接口----------------------------------------
        void Draw(string whichone, int dx, int dy);                       //?dx,dy)处绘制\径名为whichone的整个纹?/span>
        void Draw(string whichone, RECT drawRect);                       //在drawRect内绘制整个纹?/span>
        void Draw(string whichone, RECT srcRect, int dx, int dy);      //?dx,dy)处绘制纹理的srcRect部分
        void Draw(string whichone, RECT srcRect, RECT drawRect);       //在drawRect内绘制纹理的srcRect部分
        
//---------------------q四个就是前面的接口加上一个渲染的颜色------------------------
        void Draw(string whichone, int dx, int dy, D3DCOLOR color);        
        
void Draw(string whichone, RECT drawRect, D3DCOLOR color);        
        
void Draw(string whichone, RECT srcRect, int dx, int dy, D3DCOLOR color);       
        
void Draw(string whichone, RECT srcRect, RECT drawRect, D3DCOLOR color);                
            //------------------------------------------------------------------------------------
}
;

具体实现׃先放一放。规划一个程序千万不要直接从底层开始想。虽然我们这个是面向对象~程Q但?#8220;自顶向下Q逐步求精”依然Ҏ(gu)们很有帮助?br>
以上的那些接口如果实CQ那么我们就可以真真正正地开始绘图了?br>
大概汝也发现了,需要画的是一个纹理的指针Q可是我q里传入的是一个\径名。ؓ(f)什么呢Q这是因为每ơ绘制的时候,汝要是每ơ都?#8220;U理的指?#8221;方式代表一个纹理,那么可以惌不是很好理。于是我们就引入U理池的概念。纹理池正如其名Q是用来理U理的一个池子。Direct3D中有专门的东西来理Q可是咱q里用不到里面的复杂的东西,只用手动模拟一个便可。咱的代码里是直接用数组存的Q也对应存了那纹理的路径名。查找一个纹理就直接forq去Q是O(n)U别的。要是汝q求效率的话可以写棵q?wi),用map也可以?br>
汝说汝没看见代码Q不信?好吧Q咱可是贤狼赫罗啊!l汝解析Draw(string whichone,RECT srcRect,RECT drawRect,D3DCOLOR color);q个函数吧,解析了汝明白了后Q其他的也就不在话下?br>
///-------------------------------------
///在矩形drawRect内׾~绘制纹理的srcRect部分Qƈ用制定颜色渲?br>///-------------------------------------

void GraphEngine::Draw(string whichone,RECT srcRect,RECT drawRect, D3DCOLOR color)
{
    D3DXMATRIX ptransform,ptransform2,ptransform3,ptransform4;
    pSprite
->GetTransform(&ptransform);
    
float fx = (float)(drawRect.right-drawRect.left)/(float)(srcRect.right-srcRect.left);
    
float fy = (float)(drawRect.bottom-drawRect.top)/(float)(srcRect.bottom-srcRect.top);
    D3DXMatrixTranslation(
&ptransform2,drawRect.left/fx,drawRect.top/fy,0.0f);
    D3DXMatrixScaling(
&ptransform3, fx, fy, 1.0f);
    D3DXMatrixMultiply(
&ptransform4,&ptransform2,&ptransform3);
    D3DXMatrixMultiply(
&ptransform4,&ptransform4,&ptransform);
    pSprite
->SetTransform(&ptransform4);
    pSprite
->Draw(TexturePool[findTexture(whichone)],&srcRect,NULL,NULL,color);
    pSprite
->SetTransform(&ptransform);
}

D3DXMATRIX x了几个变换矩阵(什么是变换矩阵Q一?x)儿׃?x)解释Q汝先l看Q。在Direct3D中,坐标pM矩阵形式存储Qƈ且可以通过矩阵变换来变换坐标系?br>我们要吧囄在drawRect部分里,于是我们首先把坐标系原点变换到drawRect矩Ş的左上角。因为后面还?x)׾~坐标系Q所以不能直接移动过去,而要以drawRect和srcRect的比例移动过厅R?br>pSprite->GetTransform(&ptransform);q句原本的坐标pd储下来,好一?x)儿q原回去。fx记录了X轴方向的比例Qfy记录了Y轴方向的比例?br>D3DXMatrixTranslation(&ptransform2,drawRect.left/fx,drawRect.top/fy,0.0f);q句ptransform2q个矩阵改变成记录了“在X轴方向^UdrawRect.left/fxQ在Y轴方向^UdrawRect.top/fyQ在Z轴方向^U?Q因为我们不涉及(qing)3DQ?#8221;的变换信息的矩阵?br>D3DXMatrixScaling(&ptransform3,fx,fy,1.0f);q句ptransform3q个矩阵改变成记录了“X轴拉伸比例ؓ(f)fx,Y轴拉伸比例ؓ(f)fy,Z轴拉伸比例ؓ(f)1.0Q因为我们不涉及(qing)3DQ?#8221;的变换信息的矩阵?br>D3DXMatrixMultiply(&ptransform4,&ptransform2,&ptransform3);q句便是矩阵乘法了,ptransform2*ptransform3的结果存入ptransform4中?br>接下来的一句就是将目前的和原始的变换矩늛乘?br>pSprite->SetTransform(&ptransform4);q句ptransform4变换矩阵讄成坐标系?br>pSprite->Draw(TexturePool[findTexture(whichone)],&srcRect,NULL,NULL,color);Draw函数的原型已l介l过了,其中的pCenter参数传入NULLQ因为pCenter大多用到的地Ҏ(gu)?D里,׃用关心。而pPosition传入NULL是因为咱们前面已l变换过了坐标系Q只用直接在原点l制出来好了。findTexture(whichone)是一个需要自己写的函敎ͼ具体是传入文g名\径,然后q回值是q个文g在纹理池中的索引。若此纹理不存在于纹理池中便重新加蝲一张纹理然后返回烦引?br>最后一句将坐标p还原?br>
于是q个p释完了。那么留下的问题是所谓的变换矩阵。矩阵就不解释了。变换矩阵就是可以通过矩阵乘法来将你的坐标变换至目标坐标,q样利用矩阵乘法十分方便快捷Q效率很高?br>3D里的矩阵变换是由一??列矩阵(?x0,x1,x2)Q,以及(qing)一??行矩阵(变换矩阵Q的矩阵乘法l成Q是q样的(q里矩阵只以3*3ZQ意在表现矩阵乘法)Q?br>

其中(x0,x1,x2)是原始点Q?y0,y1,y2)是最l得出的目标炏V变换信息存储于矩阵中,q阵乘法得出结果。而实际根据变换不同需要的变换矩阵也不同。下面介l一?D中常用的变换矩阵Q请注意矩阵表示Ҏ(gu)Q上面那图是从上CQ下面的是从左往叻IQ?br>1、^Ud?br>
q个变换需??的变换矩阵,如上图所C,其得出的l果便是(x,y,z)q移(Tx,Ty,Tz)得到的坐标?br>q程名:(x)D3DXMatrixTranslation

2、׾~变?br>
l果?x,y,z)在X轴方向׾~比例SxQY轴方向׾~比例SyQZ轴方向׾~比例Sz得到的坐标?br>q程名:(x)D3DXMatrixScaling

3、旋转变?br>
旋{变换分ؓ(f)3U:(x)lX_(d)lY_(d)lZ轴。图C分别如下:(x)
X_(d)(x)
Y_(d)(x)
Z_(d)(x)
l果?x,y,z)lX轴或Y轴或Z轴旋转角?#952;Q弧度制Q?br>q程名:(x)D3DXMatrixRotationX D3DXMatrixRotationY D3DXMatrixRotationZ

׃用中只要忽略Z_(d)便可辑ֈ惌到的变换效果?br>
再说一下所谓的渲染颜色
D3DCOLOR是由4个部分组成的QA(alpha,透明?以及(qing)RGB(Red,Green&Blue)Q?br>q个值指定了U理中A、R、G、B的表现程?br>下面我们用半透明的灰色来遮住一张图看看效果Q?br>原图Q?br>

用color (255,50,50,50)l制了以后的效果Q?br>
也就是所有颜色的“表现?#8221;?55变成50?br>
若用(255,0,255,255)l制了以后,U色部分无法表现出来了Q?br>

若是ALPHAg一点,?x)变得透明?br>
q些所有的了解了后Q你可以画图了Q注意,因ؓ(f)Direct3D中存储的U理长宽必须?的方q的。因样对g加速方面很有帮助(׃需要了解)。咱把到目前为止的代码全部打包发出来一下,代码里也有注释的Q汝研究一下便可以领会(x)透彻?br>
代码下蝲地址Q工E文件属于Visual Sutio 2008Q若汝的VS版本q低Q请|上癑ֺ一下VS工程转换器)Q?br>/Files/CK985/Direct3D_2D.rar

里面的工E咱都是调制出来的,~译q行没问题,?x)?00*600的窗口里d上面那张原图。代码里面除了今天讲的绘制纹理方面,也有文字的绘Ӟq有一些其他的东西Q都是ؓ(f)了之运行更完美。汝可对比一下空的EmptyProject和咱写的?br>
那今天就到这里了。有不懂的可以回帖,也可以单独联pLQQ670188680?br>下篇QDirect3D中的?Dl制Q下Q——文字的l制以及(qing)ZGAL GAME而完善的框架?

CK 2009-08-10 00:35 发表评论
]]>
DXUT工作模式的简单解?底层框架http://www.shnenglu.com/CK985/archive/2009/06/07/86989.htmlCKCKSun, 07 Jun 2009 07:43:00 GMThttp://www.shnenglu.com/CK985/archive/2009/06/07/86989.htmlhttp://www.shnenglu.com/CK985/comments/86989.htmlhttp://www.shnenglu.com/CK985/archive/2009/06/07/86989.html#Feedback1http://www.shnenglu.com/CK985/comments/commentRss/86989.htmlhttp://www.shnenglu.com/CK985/services/trackbacks/86989.html阅读全文

CK 2009-06-07 15:43 发表评论
]]>
Air.http://www.shnenglu.com/CK985/archive/2009/06/07/86979.htmlCKCKSun, 07 Jun 2009 06:02:00 GMThttp://www.shnenglu.com/CK985/archive/2009/06/07/86979.htmlhttp://www.shnenglu.com/CK985/comments/86979.htmlhttp://www.shnenglu.com/CK985/archive/2009/06/07/86979.html#Feedback0http://www.shnenglu.com/CK985/comments/commentRss/86979.htmlhttp://www.shnenglu.com/CK985/services/trackbacks/86979.html不需要更多的语言。只是想攑֜q里提v一?br>
里面的一首歌《青I》,LIAqQ更不需要语a了,歌词贴出来吧

[ti:青空(蓝天)]
[ar: L i a]
[al:KEY-AIR]
[00:00.01]「青I(蓝天Q?br>[00:00.03]作词QKEY
[00:00.05]作曲QKEY
[00:00.07]~曲Q折户?br>[00:00.09]演唱QLia
[00:00.11]
[00:00.62]あの?br>[00:01.12](那片h)
[00:03.65]どこまで?br>[00:04.15](无边无际)
[00:07.28]青かった
[00:07.78](p湛蓝)
[00:10.94]遠くまで
[00:11.44](直到q方)
[00:14.98]あの?br>[00:15.48](那条道\)
[00:18.40]どこまで?br>[00:18.90](无限延)
[00:22.31]つづいて?br>[00:22.81](W直延箋)
[00:25.59]まっすぐ?br>[00:26.09](直到q方)
[00:29.69]一番早く素直にWった者胜?br>[00:30.10](『最早老實W的?)
[00:44.07]一番 好きな あの?br>[00:44.57](我最 喜歡 的h)
[00:52.78]Wってる
[00:53.28](W著?
[01:03.01]出れより?nbsp; 遠くに行って?br>[01:03.51](即我比M人都q离q儿)
[01:09.89]ここからまた  Wって切れる
[01:10.39](他仍?x)在q里Ҏ(gu)微笑)
[01:17.82]瞟낒閉じれば
[01:18.32](闭上双眼)
[01:23.13]c(din)と夏の日  のにおい
[01:23.63](pd夏天 阛_的气?
[01:36.37]あの?br>[01:36.87](那条河)
[01:39.51]遊んでる
[01:40.01](嬉戏?
[01:43.19]二hきり
[01:43.69](两h)
[01:46.93]泥だらけ
[01:47.43](满n泥巴)
[01:51.06]あの?br>[01:51.56](那朵云彩)
[01:54.23]qってい?br>[01:54.73](只要q到)
[01:57.90]届いたら
[01:58.40](׃(x)得到)
[02:01.62]qせ?br>[02:02.12](q福)
[02:05.63]一番早くこの坂 のぼった もの勝ち
[02:06.13](『最早登上那座山的h贏?
[02:19.88]一番好きなあの場所
[02:20.38](向我最喜欢的地?
[02:28.53]目指して
[02:29.50](前进)
[02:38.83]たくさんの思い出がある
[02:39.33](有着太多太多的回?
[02:45.70]ぅRには 何もいらないぐら?br>[02:46.20](不需要其它的M东西)
[02:53.45]瞟낒閉じれば
[02:53.95](闭上双眼)
[02:58.96]すぐあの?nbsp; のにおい
[02:59.46](pdh 的气?
[03:09.23]また夏が来る
[03:09.73](夏天再次到来)
[03:16.99]銀艌Ӂ光る
[03:17.49](银色的光?
[03:24.52]水面に映?br>[03:25.02](映照在水?
[03:32.03]二hぶんの媄
[03:32.53](两h的倒媄)
[03:42.55]出れより?nbsp; 遠くに行って?br>[03:43.05](即我比M人都q离q儿)
[03:49.28]ここからまた  Wって切れる
[03:49.78](他仍?x)在q里Ҏ(gu)微笑)
[03:57.28]瞟낒閉じれば
[03:57.78](闭上双眼)
[04:02.76]c(din)とあの日の青I?br>[04:03.26](p见到当日?那片蓝天)
[05:10.36]『END?

CK 2009-06-07 14:02 发表评论
]]>
CTSC、APIO以及(qing)四川省信息学省队选拔赛ȝhttp://www.shnenglu.com/CK985/archive/2009/05/30/86190.htmlCKCKSat, 30 May 2009 10:30:00 GMThttp://www.shnenglu.com/CK985/archive/2009/05/30/86190.htmlhttp://www.shnenglu.com/CK985/comments/86190.htmlhttp://www.shnenglu.com/CK985/archive/2009/05/30/86190.html#Feedback16http://www.shnenglu.com/CK985/comments/commentRss/86190.htmlhttp://www.shnenglu.com/CK985/services/trackbacks/86190.html在五月䆾里我们参加了三场大比赛—?/span>CTSC?/span>APIO以及(qing)省选。在q段旉里,我学C很多东西Q也意识到自p有很多不뀂以下是我对自己q三场比赛的ȝ?/span>

CTSCQ?/span>

         传说中的中国信息学国安选拔赛,果然不是一般的难。在北大的未名湖畔,认识了许多传说中的神牛——漆子超、高逸涵、金斌,q有很多很多。跟各个省的选手们交后Q交了许多新的朋友,也发现自׃他们的差距还有很大,q需要很多的努力才行?/span>

       具体来说试题的话Q确实难度对于我来说Q太大了Q没有一道题能够惛_正确的算法。于是只能骗分。一试中W二题提交答案用了很歪的模拟退火算法拿C很低的分数—?/span>8分,W一题的裸搜拿了20分,W三题裸搜都不会(x)写,于是一试就只有28分了Q这与其它h的差距实在是太大了。第二试状态更是低qP拿到W二题的游戏题就开始深入思考,费了大量的旉Q结果也只用效果很不好的A*法拿到了可怜的20分,而一、三题已l没有时间做了。于是最后,?/span>CTSC奖牌无缘?/span>

       ȝ来说Q要扑ր口的话Q?/span>CTSC对于现在的我来说实在是太难了。但是客观来_(d)自己的不_l得到充分的体现。我要走的\q有很远很远?/span>

 

APIOQ?/span>

         APIO在天大D行。因?/span>CTSC的失利,自己也不怎么提劲。到了后的那个晚上,跟同学们也谈了很多话Q意识到自己懊恼也不行,q不如认真准备下一堂考试。于是第二天早上匆匆上Z?/span>

       回头看来Q考试中我{略p非常大。第一题知道的动态规划,可是是想不出来Q于是看CW二题,发现W一问自׃(x)做,便匆匆开始写代码。解决第一问以后,H然发现自己的算法还不能解决W二个问题,q时便着了慌Q还是沿着以前的思\往下想Q结果越惌p涂Q到最后只剩一个小时的时候也没解冻I才匆忙裸了第一题和W三题。考完了下来,心情极度郁闷Q就在宿舍里呆着?/span>

       成W下来后,发现自己居然爆了零。虽然后来才知道是因己没有把E序攑֜本地文g多wD本地评测p|Q不q那时还是十分沮丧。后来虽然得知自己是铜牌Q不q也没有多少价g。MAPIOq是以失败收Z?/span>

 

省选:(x)

         l过两场大赛后,严重意识C自己的不I于是回来后还是认真地学习(fn)。不q留l我的时间也不多了,23号就省选了。成功意味着我可以l搞OIQ冲高端。可是失败也意味着Q我?/span>OI生?/span>8月䆾q束了?/span>

       比赛中,我也非常紧张。连W一题的法也只是第四小时想出来的,而后面两道题根本没有头l。第二题是数学题Q数学不好的我也挂掉了?/span>

       于是Q加上冬令营的分敎ͼ我以和第五名105分的分差华丽地排在了W七名,被淘CQ差点连正式观摩队也无法q入。这也意味着Q在8月䆾Ҏ(gu)了后Q就光荣地退役了。回儡暂的?/span>OIer的n份而努力的旉Q发现自己其实也有很多进步与收获Q而更多的Q是自己的不?/span>

 

今后Q?/span>

         最后两个月?/span>OI生Q我?x)规范自q行ؓ(f)Q认真努力地学习(fn)QI补自q不。具体的不是数学、代码的熟练度、以?qing)灵zȝ数学建模。今后,我会(x)在老师和骆可强的帮助下Q提高自q能力Q在最后的6题中拿下辉煌的成l,然后光荣退彏V?br>

CK 2009-05-30 18:30 发表评论
]]>
省选前一?/title><link>http://www.shnenglu.com/CK985/archive/2009/05/22/85330.html</link><dc:creator>CK</dc:creator><author>CK</author><pubDate>Fri, 22 May 2009 00:42:00 GMT</pubDate><guid>http://www.shnenglu.com/CK985/archive/2009/05/22/85330.html</guid><wfw:comment>http://www.shnenglu.com/CK985/comments/85330.html</wfw:comment><comments>http://www.shnenglu.com/CK985/archive/2009/05/22/85330.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/CK985/comments/commentRss/85330.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/CK985/services/trackbacks/85330.html</trackback:ping><description><![CDATA[四川省信息学省队选拔赛明天就要开始了<br><br>虽然从进入省集训队以来感觉没什么进展,不过不可思议的是自己居然不怎么紧张?br><br>反正现在想的是,只要跨进省队好了,它t门槛还是第一?br><br>本想写篇E微看得q去的随W,不过q是{省选完了再来JJYY? <img src ="http://www.shnenglu.com/CK985/aggbug/85330.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/CK985/" target="_blank">CK</a> 2009-05-22 08:42 <a href="http://www.shnenglu.com/CK985/archive/2009/05/22/85330.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <p>лǵվܻԴȤ</p> <a href="http://www.shnenglu.com/" title="精品视频久久久久">精品视频久久久久</a> <div class="friend-links"> </div> </div> </footer> <a href="http://www.tjjobs.com.cn" target="_blank">þþþþþþþþѾƷ</a>| <a href="http://www.hktjj.cn" target="_blank">ɫۺϾþþþþþþ</a>| <a href="http://www.ahtsz.cn" target="_blank">þ޾ƷĻ</a>| <a href="http://www.aeuou.cn" target="_blank">þþƷһ</a>| <a href="http://www.mt4.net.cn" target="_blank">99þùһ</a>| <a href="http://www.xsylsh.cn" target="_blank">þ99Ʒ鶹լլ</a>| <a href="http://www.yunkouzi.cn" target="_blank">77777ҹþö</a>| <a href="http://www.cate365.cn" target="_blank">ɫۺϾþþþһ</a>| <a href="http://www.sklly.cn" target="_blank">˾þô߽av</a>| <a href="http://www.jiangkangcmw.cn" target="_blank">þúݺݰۺӰԺ </a>| <a href="http://www.meloful.cn" target="_blank">þþƷҹҹҹҹҹþ</a>| <a href="http://www.m-xc.cn" target="_blank">ɫۺϾþþþ</a>| <a href="http://www.517down.cn" target="_blank">Ʒ99Ʒþ</a>| <a href="http://www.blueheaven.com.cn" target="_blank">þer99ȾƷһ</a>| <a href="http://www.qp576.cn" target="_blank">þþþþһ</a>| <a href="http://www.cn-taiyuan.cn" target="_blank">þù׾Ʒǿ</a>| <a href="http://www.superpic.cn" target="_blank">91Ʒ91þþþþ</a>| <a href="http://www.mengdie.net.cn" target="_blank">þ޸ۿ</a>| <a href="http://www.sdtra.cn" target="_blank">պӰԺþ</a>| <a href="http://www.zhuaibo.cn" target="_blank">þþƷƷëƬ</a>| <a href="http://www.dfpt.net.cn" target="_blank">þøݾƷԴվ</a>| <a href="http://www.vcexpress.cn" target="_blank">ƷþþþþþĻ</a>| <a href="http://www.lkwg.com.cn" target="_blank">޹þþۺ</a>| <a href="http://www.xczg.org.cn" target="_blank">þùѹۿƷ3</a>| <a href="http://www.269sihu.cn" target="_blank">߳þѹۿ</a>| <a href="http://www.fscre.cn" target="_blank">þþþþþƷο</a>| <a href="http://www.bken.cn" target="_blank">þþƷһԡ </a>| <a href="http://www.gjvthsj.cn" target="_blank">ۺϾþϵ</a>| <a href="http://www.yjtrade.cn" target="_blank">Ʒ99þþþþè </a>| <a href="http://www.ahlgw.cn" target="_blank">WWWAVþþӰƬ</a>| <a href="http://www.lntyzx.com.cn" target="_blank">þþƷһ</a>| <a href="http://www.chazhaoyouhui.cn" target="_blank">þ㽶߿ۿ </a>| <a href="http://www.ag202.cn" target="_blank">պŷۺϾþ</a>| <a href="http://www.beautydiary-tw.cn" target="_blank">޾ƷƷþ99һ</a>| <a href="http://www.bwgwdl.cn" target="_blank">һaƬþëƬ16</a>| <a href="http://www.piaozen.cn" target="_blank">þþþþþƷο</a>| <a href="http://www.2008qb.cn" target="_blank">ŷþۺŷ</a>| <a href="http://www.cctyn.cn" target="_blank">޹ŷۺϾþ</a>| <a href="http://www.qraw.cn" target="_blank">þùƷ͵99</a>| <a href="http://www.sxdc.net.cn" target="_blank">վþþ</a>| <a href="http://www.icxin.cn" target="_blank">뾫Ʒþþþþ</a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>