??xml version="1.0" encoding="utf-8" standalone="yes"?>色综合久久久久,欧美午夜A∨大片久久,色青青草原桃花久久综合 http://www.shnenglu.com/CK985/archive/2010/03/18/110024.htmlCK CK Thu, 18 Mar 2010 08:57:00 GMT http://www.shnenglu.com/CK985/archive/2010/03/18/110024.html http://www.shnenglu.com/CK985/comments/110024.html http://www.shnenglu.com/CK985/archive/2010/03/18/110024.html#Feedback 1 http://www.shnenglu.com/CK985/comments/commentRss/110024.html http://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束
]]> ってや?/title> http://www.shnenglu.com/CK985/archive/2010/01/23/106280.htmlCK CK Sat, 23 Jan 2010 06:31:00 GMT http://www.shnenglu.com/CK985/archive/2010/01/23/106280.html http://www.shnenglu.com/CK985/comments/106280.html http://www.shnenglu.com/CK985/archive/2010/01/23/106280.html#Feedback 0 http://www.shnenglu.com/CK985/comments/commentRss/106280.html http://www.shnenglu.com/CK985/services/trackbacks/106280.html http://www.nicovideo.jp/watch/sm8966268 q首歌很有感觉啊。。?br>以下是LRC歌词 [00:06.71]作詞QおにゅうP [00:09.33]作曲QおにゅうP [00:11.94]R曲QピノキオP [00:14.55]歌:(x)初音ミク [00:20.29] [00:24.45]依偎在一L(fng) 帥哥與美? [00:34.61]還有該死的現?詛咒你? [00:45.02] [00:45.24]Z麼這一條街? [00:50.26]到處都滿盈著W臉Q? [00:55.50]雖然是我這個孤單寂寞的? [01:01.53]我還是要告訴大家 [01:04.63] [01:04.82]福你們 直到後世 [01:09.65]g之時 參見M [01:15.62]當天壽已盡時 [01:21.17]全都i我L? [01:25.16]福你? [01:32.26] [01:47.75]一起進來的同事也 [01:52.76]Z家h拚命工作而得到晉? [01:58.39]真的令h慕不已 [02:03.40]詛咒你? [02:08.44] [02:08.60]Z麼這個國? [02:13.67]到處都滿盈著W臉Q? [02:18.85]雖然我什麼長處也沒有 [02:24.10]我還是要告訴大家 [02:27.87] [02:28.05]福你們 直到後世 [02:33.20]扑֥象 一L(fng)? [02:39.19]還有可愛的小孩子 [02:44.55]能夠圍繞在n? [02:48.92]福你? [02:53.63] [03:01.74]工作都不順利 [03:06.22]因為原本沒有工? [03:11.40]讀怹讀不好 [03:16.43]戀情也沒有M進展 [03:21.79]不論是那樣的傢伙?br>[03:26.84]或者不是那樣的傢伙們也? [03:32.79]我還是要告訴大家 [03:37.27]全部都 全部都 全部都── [03:41.09] [03:41.32]福你們 直到後世 [03:46.26]低頭哭泣的傢伙也 [03:52.12]我都會祝你? [03:57.31]所以抬起頭來吧 [04:01.79] [04:01.97]福你們 直到後世 [04:07.36]g之時 參見M [04:12.91]Z你們 今後來 [04:18.57]的幸?i予福 [04:32.71]
]]> Sumreen(GAL GAME)引擎框架 http://www.shnenglu.com/CK985/archive/2010/01/01/104602.htmlCK CK Fri, 01 Jan 2010 06:03:00 GMT http://www.shnenglu.com/CK985/archive/2010/01/01/104602.html http://www.shnenglu.com/CK985/comments/104602.html http://www.shnenglu.com/CK985/archive/2010/01/01/104602.html#Feedback 3 http://www.shnenglu.com/CK985/comments/commentRss/104602.html http://www.shnenglu.com/CK985/services/trackbacks/104602.html 阅读全文 ]]> NOIP2009前一?/title> http://www.shnenglu.com/CK985/archive/2009/11/20/101520.htmlCK CK Fri, 20 Nov 2009 13:50:00 GMT http://www.shnenglu.com/CK985/archive/2009/11/20/101520.html http://www.shnenglu.com/CK985/comments/101520.html http://www.shnenglu.com/CK985/archive/2009/11/20/101520.html#Feedback 3 http://www.shnenglu.com/CK985/comments/commentRss/101520.html http://www.shnenglu.com/CK985/services/trackbacks/101520.html 好不Ҏ(gu)都走到这一步了Q怎么能在q种地方挂掉Q?br> 可恶Q加油!
]]> Direct3D中的?Dl制Q下Q——文字的l制 http://www.shnenglu.com/CK985/archive/2009/09/10/95820.htmlCK CK Thu, 10 Sep 2009 09:29:00 GMT http://www.shnenglu.com/CK985/archive/2009/09/10/95820.html http://www.shnenglu.com/CK985/comments/95820.html http://www.shnenglu.com/CK985/archive/2009/09/10/95820.html#Feedback 3 http://www.shnenglu.com/CK985/comments/commentRss/95820.html http://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>API Q众所周知 GDI 是效率非怽下的东西。于是在q个基础上, DXUT 提供了一个东西叫?/span>CDXUTTextHelper Q它?yu)装了需要的 ID3DXFont 以及(qing) Sprite Qƈ提高了工作效率。那么具体是怎么提高的呢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:ID3DXFont cd的指针,传入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>graphEngine Q具体参见代?/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>
以上是利用ID3DXFont l制文字的基内容。虽然说是基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
]]>Direct3D中的?Dl制Q上Q——纹理的l制 http://www.shnenglu.com/CK985/archive/2009/08/10/92747.htmlCK CK Sun, 09 Aug 2009 16:35:00 GMT http://www.shnenglu.com/CK985/archive/2009/08/10/92747.html http://www.shnenglu.com/CK985/comments/92747.html http://www.shnenglu.com/CK985/archive/2009/08/10/92747.html#Feedback 7 http://www.shnenglu.com/CK985/comments/commentRss/92747.html http://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而完善的框架?
]]> DXUT工作模式的简单解?底层框架 http://www.shnenglu.com/CK985/archive/2009/06/07/86989.htmlCK CK Sun, 07 Jun 2009 07:43:00 GMT http://www.shnenglu.com/CK985/archive/2009/06/07/86989.html http://www.shnenglu.com/CK985/comments/86989.html http://www.shnenglu.com/CK985/archive/2009/06/07/86989.html#Feedback 1 http://www.shnenglu.com/CK985/comments/commentRss/86989.html http://www.shnenglu.com/CK985/services/trackbacks/86989.html 阅读全文 ]]> Air. http://www.shnenglu.com/CK985/archive/2009/06/07/86979.htmlCK CK Sun, 07 Jun 2009 06:02:00 GMT http://www.shnenglu.com/CK985/archive/2009/06/07/86979.html http://www.shnenglu.com/CK985/comments/86979.html http://www.shnenglu.com/CK985/archive/2009/06/07/86979.html#Feedback 0 http://www.shnenglu.com/CK985/comments/commentRss/86979.html http://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?
]]> CTSC、APIO以及(qing)四川省信息学省队选拔赛ȝ http://www.shnenglu.com/CK985/archive/2009/05/30/86190.htmlCK CK Sat, 30 May 2009 10:30:00 GMT http://www.shnenglu.com/CK985/archive/2009/05/30/86190.html http://www.shnenglu.com/CK985/comments/86190.html http://www.shnenglu.com/CK985/archive/2009/05/30/86190.html#Feedback 16 http://www.shnenglu.com/CK985/comments/commentRss/86190.html http://www.shnenglu.com/CK985/services/trackbacks/86190.html 在五月䆾里我们参加了三场大比赛—?/span>CTSC ?/span>APIO 以及(qing)省选。在q段旉里,我学C很多东西Q也意识到自p有很多不뀂以下是我对自己q三场比赛的ȝ?/span>
CTSC Q?/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>
APIO Q?/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。M APIO q是以失败收Z?/span>
省选:(x)
l过两场大赛后,严重意识C自己的不I于是回来后还是认真地学习(fn)。不q留l我的时间也不多了, 23 号就省选了。成功意味着我可以l搞 OI Q冲高端。可是失败也意味着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>
]]> 省选前一?/title> http://www.shnenglu.com/CK985/archive/2009/05/22/85330.htmlCK CK Fri, 22 May 2009 00:42:00 GMT http://www.shnenglu.com/CK985/archive/2009/05/22/85330.html http://www.shnenglu.com/CK985/comments/85330.html http://www.shnenglu.com/CK985/archive/2009/05/22/85330.html#Feedback 0 http://www.shnenglu.com/CK985/comments/commentRss/85330.html http://www.shnenglu.com/CK985/services/trackbacks/85330.html 虽然从进入省集训队以来感觉没什么进展,不过不可思议的是自己居然不怎么紧张?br> 反正现在想的是,只要跨进省队好了,它t门槛还是第一?br> 本想写篇E微看得q去的随W,不过q是{省选完了再来JJYY?
]]>
þþþþþþþþѾƷ |
ɫۺϾþþþþþþ |
þƷĻ |
þþƷһ |
99þùһ |
þ99Ʒ鶹լլ |
77777ҹþö |
ɫۺϾþþþһ |
˾þô߽av |
þúݺݰۺӰԺ
|
þþƷҹҹҹҹҹþ |
ɫۺϾþþþ |
Ʒ99Ʒþ |
þer99ȾƷһ |
þþþþһ |
þùƷǿ |
91Ʒ91þþþþ |
þۿ |
պӰԺþ |
þþƷƷëƬ |
þøݾƷԴվ |
ƷþþþþþĻ |
þþۺ |
þùѹۿƷ3 |
߳þѹۿ |
þþþþþƷο |
þþƷһԡ
|
ۺϾþϵ |
Ʒ99þþþþè
|
WWWAVþþӰƬ |
þþƷһ |
þ㽶߿ۿ
|
պŷۺϾþ |
ƷƷþ99һ |
һaƬþëƬ16 |
þþþþþƷο |
ŷþۺŷ |
ŷۺϾþ |
þùƷ͵99 |
վþþ |
뾫Ʒþþþþ |