??xml version="1.0" encoding="utf-8" standalone="yes"?>99久久国产综合精品女同图片,久久精品成人,一级a性色生活片久久无http://www.shnenglu.com/kava12/category/4297.html标题是记忆非常深ȝ一部电影,《太I梦》,很好的励志片。自׃个h在电视上看的QU感觉现在还记得?/description>zh-cnMon, 19 May 2008 18:51:53 GMTMon, 19 May 2008 18:51:53 GMT60W??- 调色? 游戏概念, 双缓冲区{等Q?Q?/title><link>http://www.shnenglu.com/kava12/archive/2007/05/21/24523.html</link><dc:creator>Gattaca</dc:creator><author>Gattaca</author><pubDate>Mon, 21 May 2007 03:33:00 GMT</pubDate><guid>http://www.shnenglu.com/kava12/archive/2007/05/21/24523.html</guid><wfw:comment>http://www.shnenglu.com/kava12/comments/24523.html</wfw:comment><comments>http://www.shnenglu.com/kava12/archive/2007/05/21/24523.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/kava12/comments/commentRss/24523.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/kava12/services/trackbacks/24523.html</trackback:ping><description><![CDATA[<p>注:原文地址Q?a >http://scorpioncity.com/dj2.html<br></a><br></p> <h1>3、一些你写程序时必须知道的概?/h1> <p> </p> <h2>3.1 位图和子囑Ş </h2> <p>位图是一副图片在计算机里被当作一个像素值的数组来存储。这是个相当y脚的解释。基本上可以是计机上的M囄Q通常是一块由像素l成的矩形。子囑Ş是个和位图一L东西Q但是通常q个子图形相关的位图有透明区域Q对于子囑Ş的精定义在E序员之间也是相当不同的Q。子囑Ş是游戏里一个相当重要的l成Q有着过一百万ơ的使用。例如,你的鼠标光标是一个合格的子图形,DOOM里的怪物也是子图形。面向你的那边被~程为有透明区域的^面图片(有点l)。记住子囑ŞL面对你,但ƈ不是说怪兽L面对你。不怎样Q对位图和子囑Ş的解释应该够了Q我惟?/p> <h2>3.2 双缓冲区和页{ </h2> <p>如果你的游戏直接l图到当前显C器Q当游戏直接l图到屏q时用户注意到非常明显的闪烁。解x案是准备两个囑փ~冲区,一?#8220;前缓冲区”Q一?#8220;后缓冲区”。前~冲区是用户看到的那个,后缓冲区不是。你把所有的操作d后缓冲区Q当完成l制完屏q的所有部分后Q你复制后缓冲区的所有内容到前缓冲区。这是双缓冲区Q事实上现在有好几种双缓冲区模式?br>通常有两U方法来执行后缓冲区到前~冲区的传输Q复制或者页{?/p> <p>复制Q后~冲区的内容单的复制到前~冲区。后~冲区可以在pȝ内存或者其他显存表面(q个不会译了,应该是显卡内存吧Q;<br>늿转:使用q种技巧,׃需要实际的复制操作。两个缓冲区都必d昑֭中。ؓ你游戏的每个框架轮流使用q两个表面来l图。你Ll图到当前不可见的那个缓冲区Q在框架l制完成后,你指C硬件去把这个绘制好的缓冲区当成可见的,因此在每个框架中前缓冲区现在都是后缓冲区了?/p> <p>q个技巧会带来一个问?#8220;Tearing”。显C器按照h频率重画屏幕上的囄Q通常大约每秒70ơ(70HzQ。一般的Q按照从上到下的序。这旉题出CQ当你用上面的M一U技巧指C硬件开始画另一个东西时Q显C器只画了一半的囑փ。当你这么做Ӟ下半截的屏幕使用的是新图像,而上半截屏幕q是老图像。这个效果就叫做“Tearing”Q或?#8220;切断”。有个已有的解决ҎQ无论如何,你的面{有可能与屏幕h的结束很好的配合h。(fixmeQ我想DirectDraw以及替你处理q个了,查一下)?/p> <h1>4?剪切和DirectDraw剪切?/h1> <p> </p> <p>剪切是一U技术,指预防绘图操作超出到屏幕外边或者超Z个矩形区域比如窗口。如果不执行q个Q通常的结果用最好的词来描述是一团糟Q这句是瞎译的)。在DirectDraw里,例如Q当使用H口模式Ӟwindow会给DirectDraw一个它惌的正的屏幕区域。无论如何,一个行好的DirectDrawE序应该只画属于自己的窗口。DriectX有一个对象叫做剪切器可以被加到DirectDraw表面来预防画到窗口外面?br></p> <h1>5、DirectDraw表面</h1> <p> </p> <p>DirectDraw使用“表面”去访问一D内存,无论是系l内存还是显存,内存D通常用来存储位图Q纹理图Q子囑ŞQ屏q或H口的当前内宏V?br>DirectDraw也支?#8220;覆盖”Q一个特D类型的子图形,一?#8220;覆盖”通常是屏q上被覆盖的包含透明位图的内存段。例如,一个赛车游戏可能对N区域和窗口边框用覆盖?br>在有些情况下DirectDraw表面使用的内存可能被丢弃Q因为DirectDraw和GDI׃n资源。你的程序需要规律的查看q个是否发生Q如果被丢弃那就要恢复表面?br></p> <h1>6、DirectXq回值和错误?/h1> <p> </p> <p>所有的DirectX函数q回HRESULT作ؓ错误码。自从DirectX对象ZCOM体系后,正确的方法检查DirectX函数p|是用宏 SUCCEEDED() ?FAILED() ,用HRESULT做参数。ƈ不是查一个if够了,例如Q有的DirectDraw函数q回HRESULT{于DD_OKQ但COM对象可能会有多种表示正确的返回|你的代码有可能还会正工作,但是q个是错误的Ҏ?/p> <p>有些事情需要引h意,有写DirectX函数执行成功后会q回p|码。例如,当你仅询问数据大的时候,IDirectPlay::GetPlayerData返回DPERR_BUFFERTOOSMALL。This behaviour isn't documented either, which is incredibly frustrating. There aren't many of these, but be on the lookout.<br></p> <h1>7、DirectX调试</h1> <br>当你安装DirectX SDK是有个选择安装零售版库q是调试版的。调试版会诊断信息OutputDebugStringC的调试器Q这个会很有用。无论如何,q个会降低很多速度。如果你只是想玩游戏Q那选择零售版的库,如果你主要做游戏开发,而且你有_快的机器Q安装调试版本? <p> </p> <img src ="http://www.shnenglu.com/kava12/aggbug/24523.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/kava12/" target="_blank">Gattaca</a> 2007-05-21 11:33 <a href="http://www.shnenglu.com/kava12/archive/2007/05/21/24523.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>W??- 调色? 游戏概念, 双缓冲区{等http://www.shnenglu.com/kava12/archive/2007/05/18/24336.htmlGattacaGattacaFri, 18 May 2007 08:18:00 GMThttp://www.shnenglu.com/kava12/archive/2007/05/18/24336.htmlhttp://www.shnenglu.com/kava12/comments/24336.htmlhttp://www.shnenglu.com/kava12/archive/2007/05/18/24336.html#Feedback0http://www.shnenglu.com/kava12/comments/commentRss/24336.htmlhttp://www.shnenglu.com/kava12/services/trackbacks/24336.html注:原文地址Q?a >http://scorpioncity.com/dj2.html


1、图像模?/h1>

 

按照用多位来存储屏q上的一个像素,有好多种屏幕模式。用更多的位,p昄更多的颜Ԍ但会占用更多的显存?br>
  • 1????“indexed”模式Q?位就是通常所说的"256?Q;
  • 16位(64KԌ“high-color” 模式Q?
  • 24位(16.7MԌ“真彩?#8221;模式Q?
  • 32?RGBA 模式Q前三个字节?4位真彩色模式一PW?个字节用?#8220;alpha-channel”Q即透明度?
q些模式都是可用的。下面说一下分辨率Q?br>
  • 320x200
  • 320x240
  • 640x400
  • 640x480
  • 800x600
  • 1024x768
  • 1280x1024
  • 1600x1200
现在比较常用的是640x480Q好像年代比较久q了q篇文章Q我觉得1024x768应该比较常用吧)?br>昄器通常?/4的纵横比Q所以沿着高的那个Ҏ有的像素点应该是宽的那个?/4Q这样像素点的长宽比是1Q所以像素点是正方形,也就是说100个像素在一个方向上的物理长度和另一个方向上的相当。但?20x200不是q样子滴Q实际上它的像素ҎE显瘦高一点的?br>

2、颜色原?/h1>
有好多种表示颜色的方法,?#8220;颜色模型”Q比较常见的一个是“RGB”Q几乎所有可见的颜色都可以用U、绿、蓝三种颜色按照各种比例l合生成。通常会用三个字节来存储颜Ԍ每位表示一个主色的强度Q从0?55。比如纯的亮U色是#ff0000,紫色?ff00ff,灰色?969696,{等?br>下面是一些可以用来表C颜色的c代码Q?

 

struct SColor
{
    
int r;
    
int g;
    
int b;
}
;

SColor make_rgb( 
int r, int g, int b )
{
    SColor ret;
    ret.r 
= r;
    ret.g 
= g;
    ret.b 
= b;
    
return ret;
}


或者你可能用一个无W号32位整型来储存RGB颜色Q?-7位存蓝色Q?-15位绿色等{?br>

typedef unsigned int rgb_color;

#define MAKE_RGB(r,g,b) ( ((r) 
<< 16| ((g) << 8| (b) )


当然q有其他的颜色模型,比如HSVQHue 色调, Saturation 饱和? Luminance 亮度Q,但我不打涉及它?/p>

2.1 High-color和true-color模式



在这两种模式下,屏幕像素按照他们相应的RGB值存储到昑֭里。比如,如果屏幕左上角的像素Ҏl色Q那么在true-color模式下,昑֭里前三个字节是0,255,0。而在high-color模式下,对应的RGB值分别用5??位来存储Q即?位红Ԍ接下?位绿Ԍ然后5位蓝Ԍ所以在q个模式下显存对应的是两个字节Q二q制表示是 00000111 11100000?

 

2.2 Z调色板或者indexed模式


Indexed模式使用一?#8220;look up table”QLUT)的原理,即颜色查看表Q通常q种模式使用8位图像模式,?56Ԍ屏幕上的每个像素都用一个字节来表示Q所以每ơ只能显C?56 U颜Ԍ所以这256U颜色就按照每种3个字节存到LUT里,昑֍每次按照LUT里的值确定要昄的颜艌Ӏ?br>用Indexed模式创徏一个程序是非常痛苦的,其是搞囑փ艺术的,但用Indexed模式q是有一些优势的:

    * 需要很的内存
    * q行会更快,因ؓ需要传输的字节变少?br>    * 一些有的“调色板动?#8221;技巧,在其他模式下很难完成的在Indexed模式下简直太Ҏ了。你可以只改变LUT里的值去改变屏幕颜色Q而不需要改变内存里每个像素对应的倹{例如,一个E出效果可以改变LUT里的RGB值到0来实现?br>    * 当你有一个纹理需要很多内存的时候,有些3D加速器支持Indexed模式的纹理?/p>

2.3 ModeX


ModeX是一个特D的 VGA 256色模式,q种模式下显存的内容会按照一个稍微复杂点planar(二维)格式。这个模式下的分辨率可以非常高,DirectDraw知道如何?ModeX表面Q但是windows GDIq不会,所以当你؜合这两种不同cd表面的时候要心。当讄DirectDraw全屏模式时可以选择是否允许DirectDraw创徏ModeX 表面。这些日子里你可能想避开ModeX?

 

2.4 Pitch/Stride


虽然屏幕分L率可能是640x480x32,但这q不是说每行像素会占?40x4个字节的昑֭。因为速度上的原因Q显卡存储的q些表面宽度l常比他们逻辑上要宽。例如,最大支?024x768的显卡可能会把所有从320x200?024x768的模式内部实Cؓ1024x768模式Q所以表面的双会留下空?span style="FONT-SIZE: 10pt; COLOR: green">Q呵呵,默认左对齐)Q这个分配给表面实际的宽度就UCؓ表面的PitchQ或者StrideQ,知道表面的Pitch是非帔R要的Q不它是一?D DirectDraw 表面q是U理贴图Q可以?DirectDraw 查询表面的Pitch?br>

3、一些游戏概念你需要知?br>

下班了,以后l箋。。?/p>

Gattaca 2007-05-18 16:18 发表评论
]]>
þĻƷһ| ˾þ777777| ޾ƷŮþþþ99| ޾þһ | þþþ| avպƷþþþþa| ݺɫþþۺϲ| һƷþþ޹ | ˾ƷۺϾþþ| Ʒ˾þþ| һۺϾþ| AVþþƷݺݰ˳| 99þ99þþƷ| þþþþùƷ볬| þþƷһ| þþþAV| þavСݲ| ƷþþþӰӲ| 㽶þþƷۺ| Ʒ99þþþþլ| ƷþþĻѿ | þרƷ| þþþƷר| þۺϾɫۺϾƷ| þþavҰһ| Ů˸߳þþýˮ| պŷ޹ƷĻþþ | 㽶þ99| þþþۺϹŷһ| þ㽶һëƬ| 99þۺϾƷ| Ʒþþþþ| Ʒþþþþþ| ˺ݺۺϾþ| ƷþþƷ| þþþþۺһĻ| þþƷ99Ʒ| ҹƷƬþӰ| ƷҹþøƬ| 99þùۺϾƷӰԺ| 㽶þþþ|