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

posts - 16,  comments - 81,  trackbacks - 0
 

Lesson 2: 走向全屏

From

http://www.directxtutorial.com/tutorial9/b-direct3dbasics/dx9b2.aspx#still

Translated By----Double One(王大寶)   dfghj77777@gmail.com
Finished At 20101215

筆者:自第一篇發(fā)出以來,已過一月。最近忙,翻譯有些耽擱,接下來我會保證一周至少一篇 ,謝謝大家的支持。

課程概述

Making your game fullscreen is easy, but requires changing a few details of the program, as well as adding a couple lines of code.

In this lesson we will cover two things.  First, we will go over how to globalize your screen resolution and why you would do this.  Second, we'll cover the mechanics of making a window go into fullscreen mode.

其實全屏化很容易,改幾行代碼就好,來死狗(Let’s Go)。

在這一課中我們將介紹兩件事情。首先,我們將研究怎樣改變你的屏幕分辨率以及為什么要這么做。其次呢,我們捎帶介紹一下使窗口進入全屏模式的機制原理。

設(shè)置屏幕尺寸

Throughout your DirectX experience and in game programming you will come across many functions and structs that demand to know your screen size.  This can become a hassle when you decide to change the resolution later, and especially when you decide to change it during run-time.  For right now, we will cover a simple method to standardize your screen size across your program.

在你的DirectX或者游戲編程經(jīng)歷里你一定會碰到許多函數(shù)和結(jié)構(gòu)體管你要屏幕尺寸,是的,這也許并不困難。可是當你要更改分辨率時麻煩就來了,尤其是你非得在運行的時候這么干。現(xiàn)在,哥將給你介紹一個簡單的方法來規(guī)范你的程序的屏幕大小,這個方法非常簡單,但是非常的實用,而且,它只要九——百——九——十——八,還猶豫什么,趕緊往下看吧。

 

First, we must add two directives to the top of our program.  These represent the screen width and the screen height.

首先,我們在程序開頭添加兩個指令。這些代表了屏幕的寬度和屏幕的高度。

1// define the screen resolution
2#define SCREEN_WIDTH  800
3#define SCREEN_HEIGHT 600
4

 

The next step is to go through your program to where you indicate the width and height of your window.  Up to this point in the tutorial, you only have one, although we will come across another in a minute.  Do this to the code (changes in bold):

接下來,來到聲明窗口寬度和高度的地方。本教程到目前為止,只有一個聲明的地方,注意粗體那行:

 1hWnd = CreateWindowEx(NULL,
 2                          L"WindowClass",
 3                          L"Our Direct3D Program",
 4                          WS_OVERLAPPEDWINDOW,
 5                          300300,
 6                     SCREEN_WIDTH, SCREEN_HEIGHT,    // 設(shè)置新的尺寸 
 7NULL,
 8                          NULL,
 9                          hInstance,
10                          NULL);
11
 

In a later lesson we will cover how to maintain screen size throughout your game after changing it during runtime.

There are specific resolutions that are available on most PCs, the most common of which can be seen in this table.

在后面的課上,我們將討論如在運行過程中改變屏幕尺寸后繼續(xù)游戲。
這兒有張常見的分辨率表可以參考一下。

 

[Table 2.1 - Common Screen Resolutions]更多信息請猛擊我

Resolution

Pixels

Widescreen

800 x 600

480,000

No

1024 x 768

786,432

No

1152 x 864

995,328

No

1280 x 1024

1,310,720

No

1600 x 1200

1,920,000

No

1440 x 900

1,296,000

Yes

1680 x 1050

1,764,000

Yes

1920 x 1080

2,073,600

Yes

1920 x 1200

2,304,000

Yes



 

變成全屏模式

When changing to full screen you are doing several things.  First, your are telling Windows not to apply any of the standard Windows borders to your window.  Second, you are telling Windows to have your window overlap all other things on the screen, including the start menu.  Third, you are telling DirectX to change the resolution of the monitor to your set preference.  Finally, although less importantly, you are telling Windows to leave the window background color up to you.

The first two of these are handled by changing some CreateWindowEx() parameters.  The changes we need to make are shown here.

切換到全屏的時候你要做這么幾件事兒。首先,你告訴Windows不要添加任何標準的Windows窗口邊框。其次,你告訴不要把其他Windows窗口蓋在我們的全屏游戲上,包括開始菜單。再次,你告訴DirectX的把顯示器的分辨率設(shè)置成我們要的值。最后,盡管這條不是那么重要,你得告訴Windows離開窗口時的背景色。
前兩個處理通過改變一些CreateWindowEx()的參數(shù)。改動如下。

 1hWnd = CreateWindowEx(NULL,
 2                          L"WindowClass",
 3                          L"Our Direct3D Program",
 4                          WS_EX_TOPMOST | WS_POPUP,    // fullscreen values
 5                          00,    // the starting x and y positions should be 0
 6                          SCREEN_WIDTH, SCREEN_HEIGHT,
 7                          NULL,
 8                          NULL,
 9                          hInstance,
10                          NULL);
11

 

Here we set the starting x and y positions to 0.  We also changed the previous parameter to "WS_EX_TOPMOST | WS_POPUP".  The WS_EX_TOPMOST is self-explanatory, and makes the window overlap everything else.  The WS_POPUP is less self-explanatory, but what it does is tell Windows to remove all borders of any kind, including the rounded-edge top that you see in Windows XP.

在這里,我們設(shè)置xy的初始位置為0。我們還改變了第四個參數(shù),將其設(shè)置為了“WS_EX_TOPMOST | WS_POPUP” WS_EX_TOPMOST顧名思義就是讓我們的全屏程序在桌面最頂層。WS_POPUP的作用是告訴Windows以消除任何形式的所有邊界,包括圓形的邊緣等窗口邊框,總之就是你所看到過的全屏游戲那樣。

 

There is also a member of the WINDOWCLASSEX struct that we need to take out.  This leaves the background color untouched, which means it won't be visible as window for a second or two before the game starts (important to making your game look professional).

還有一個WINDOWCLASSEX結(jié)構(gòu)的成員,我們需要把它拿掉。它的作用是設(shè)置窗口背景色不,而這會使游戲全屏時屏幕閃爍幾下(把它拿掉會讓您的游戲看起來專業(yè)得多)。

1 wc.hbrBackground = NULL;//(HBRUSH)COLOR_WINDOW;
 

Next, we have to tell DirectX about our new screen resolution.  We do this by making a few changes to the d3dpp struct we built in the last lesson.  Let's look at what they are before we see what they do.

下一步,我們來告訴DirectX一個新的屏幕分辨率。我們通過對上一課中創(chuàng)建的d3dpp結(jié)構(gòu)體進行一些小小的改變來完成這項工作。下面讓我們看看具體代碼吧

 

 1D3DPRESENT_PARAMETERS d3dpp;    // create a struct to hold various device information
 2
 3    ZeroMemory(&d3dpp, sizeof(d3dpp));    // clear out the struct for use
 4    d3dpp.Windowed = FALSE;    // program fullscreen, not windowed
 5    d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD;    // discard old frames
 6    d3dpp.hDeviceWindow = hWnd;    // set the window to be used by Direct3D
 7    d3dpp.BackBufferFormat = D3DFMT_X8R8G8B8;    // set the back buffer format to 32-bit
 8    d3dpp.BackBufferWidth = SCREEN_WIDTH;    // set the width of the buffer
 9    d3dpp.BackBufferHeight = SCREEN_HEIGHT;    // set the height of the buffer
10


 

Let's examine these new back buffer related variables.

下面我來解釋一下這些新的后臺緩沖相關(guān)變量

 

d3dpp.BackBufferFormat

This member is used to tell Direct3D what kind of pixels should be displayed.  There are six types that can be used here, but two of them are older types (16-bit) and not generally used anymore.  There are several 32-bit types that we can use.  We'll use the D3DFMT_X8R8G8B8.  See the table for a description along with some other values than can be used here (definitely not all of them).

這個成員變量是用來告訴Direct3D什么樣的像素會被顯示。可分為六種 ,但其中兩大類型太老了(16),一般不到。有432位的類型,我們可以使用。本課將使用D3DFMT_X8R8G8B8。想知道具體這個四個類型,可以看看下面的表。

 

[Table 2.2 - Some Back Buffer Formats]

描述

D3DFMT_A8R8G8B8

This is a 32-Bit pixel format, with 256 levels (8 bits) of red, green, blue and alpha (semi-transparency).

這是一個32位的像素格式。有256(8bit)的紅,綠,藍以及透明通道。

D3DFMT_X8R8G8B8

This is similar to A8R8G8B8, with the one difference being that it does not support alpha, even though there are 8 bits to represent this.

這個和上一個很類似,唯一的不同就是這個不支持透明

D3DFMT_A2R10G10B10

This is a 32-Bit pixel format, with only two bits of alpha, but 10 bits (1024 levels) of each red, green and blue.

還是一個32位的像素格式。2bit的透明通道,10bit1024級)的紅綠藍通道。

D3DFMT_A16B16G16R16

64-BIT COLOR!  If you have the capability to run 64-bit color, I'd recommend playing around with this to see how it works.
64bit
的!哦這太棒了。如果你可以運行64位的顏色,我強烈推薦你使用這個
This value has 16 bits for each component (65536 levels compared to the current measly 256!)

紅綠藍加透明各占16bit65536級)。

 

BackBufferWidth and BackBufferHeight

These two members indicate the width and height of the back buffer.  Painfully simple.

這兩個成員變量表明后備緩沖區(qū)的寬度和高度。相當簡單

最終成品

So, there isn't much to change.  Let's take a look at the whole picture and see what is different and what is the same.

所以,其實沒改動多少。讓我們看一看整個代碼,并對比上一課什么是不同的,什么是一樣的。


 

There isn't really a point in me showing a screenshot of this program's result, because it would just be a blue rectangle.  Your program should look like that: a blue rectangle with a mouse pointer in the middle.

我沒有做截圖,因為它只是一個藍色的長方形。你的程序應(yīng)該也看起來像他一樣:藍色的長方形充鼠標指針在中間。

總結(jié)

Great!  We now have a simple platform on which to build games.

Before you go on, I recommend doing the following exercise to gain familiarity with the code in this program:

Change the resolution of the program until you are familiar with the various resolutions selectable.

When you're ready to go on, let's hit the next lesson!

太棒了!我們現(xiàn)在有一個簡單的平臺做游戲。  

在你接著干之前,我建議做做這幾個練習一遍更好地熟悉Direct3D:  

改變程序的分辨率,直到你熟悉各種各樣可選擇的分辨率。

當你準備好了,我們開始下一個教程。

 

Next Lesson:  An Overview of the Third Dimension

下一課:三維的概述

 

GO! GO! GO!

 

posted on 2010-12-15 23:54 叫我老王吧 閱讀(2403) 評論(0)  編輯 收藏 引用 所屬分類: DierectXC++
<2010年12月>
2829301234
567891011
12131415161718
19202122232425
2627282930311
2345678

常用鏈接

留言簿(4)

隨筆分類

隨筆檔案

搜索

  •  

最新評論

閱讀排行榜

評論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            欧美国产日本韩| 激情一区二区三区| 亚洲一二三四久久| 性8sex亚洲区入口| 国产手机视频一区二区| 欧美中文字幕久久| 麻豆久久婷婷| 一区二区免费在线观看| 国产精品久久久免费| 欧美一区二区三区在线免费观看| 久久漫画官网| 日韩手机在线导航| 国产精品一区视频网站| 久久大逼视频| 亚洲精品视频一区| 久久久久久欧美| 99视频一区二区| 国产欧美精品一区aⅴ影院| 老司机久久99久久精品播放免费| 亚洲区中文字幕| 亚洲一区在线免费观看| 国内视频精品| 欧美日韩一区二区三区在线看 | 欧美一区二区三区在线视频 | 美女精品在线| 亚洲永久免费视频| 在线观看日韩欧美| 国产精品夜夜夜| 欧美精选午夜久久久乱码6080| 午夜日本精品| 亚洲精品视频在线观看网站| 久久久www成人免费无遮挡大片 | 亚洲综合色网站| 亚洲国产成人精品女人久久久| 欧美亚男人的天堂| 欧美顶级少妇做爰| 久久精品男女| 亚洲一区二区三区在线播放| 亚洲国产精品精华液网站| 久久成人在线| 亚洲免费视频一区二区| 最新亚洲电影| 韩国视频理论视频久久| 国产精品亚洲综合一区在线观看| 欧美激情亚洲综合一区| 久久久久一区| 欧美一区二区三区在| 日韩一区二区精品视频| 亚洲电影免费观看高清| 久久精品一区四区| 欧美一区二区性| 亚洲少妇自拍| 亚洲国产精品视频| 影音先锋成人资源站| 国产亚洲欧美日韩在线一区| 国产精品视频不卡| 国产精品成人一区二区网站软件| 欧美啪啪成人vr| 欧美精品一区二区三区蜜桃 | 国产精品福利在线观看网址| 欧美精品二区| 欧美成人精品激情在线观看 | 欧美激情网站在线观看| 免费欧美高清视频| 久久综合伊人| 欧美成年人网站| 欧美激情a∨在线视频播放| 麻豆精品一区二区综合av| 久久久久久久久久久一区| 久久精品人人做人人综合| 久久成人久久爱| 久久精品中文字幕一区| 久久久另类综合| 久久性色av| 米奇777在线欧美播放| 久久综合久久久久88| 欧美/亚洲一区| 欧美黄色日本| 国产精品二区在线| 国产精品一区二区三区免费观看| 国产精品一区二区黑丝| 国产午夜精品久久久久久免费视 | 性欧美暴力猛交69hd| 欧美一区二区在线看| 久久精品人人| 欧美激情视频一区二区三区免费| 欧美激情精品久久久久久蜜臀| 欧美国产精品中文字幕| 亚洲欧洲免费视频| 中文在线不卡视频| 欧美一区二区私人影院日本| 久久艳片www.17c.com| 欧美国产一区二区三区激情无套| 欧美日韩免费高清一区色橹橹| 国产精品白丝jk黑袜喷水| 国产欧美一区二区三区视频| 激情六月综合| 一区二区三区国产在线| 欧美中文字幕在线播放| 免费观看亚洲视频大全| 亚洲乱码国产乱码精品精可以看| 在线一区视频| 狂野欧美激情性xxxx欧美| 欧美日韩1区2区| 国产一区二区久久精品| 亚洲日韩视频| 欧美一区二区福利在线| 欧美激情91| 在线性视频日韩欧美| 久久亚洲国产精品一区二区| 欧美三级乱码| 尤物精品国产第一福利三区| 亚洲天堂成人在线视频| 久久亚洲春色中文字幕久久久| 亚洲激情啪啪| 欧美一二三视频| 欧美日韩国产黄| 激情成人av在线| 亚洲一区在线免费观看| 欧美福利在线| 性色一区二区三区| 欧美日韩一区二区三区免费看| 好吊一区二区三区| 午夜精品999| 亚洲激情欧美| 快she精品国产999| 国产性做久久久久久| 中文国产一区| 亚洲电影有码| 久久久久久九九九九| 国产精品毛片大码女人| 日韩亚洲国产精品| 欧美大片一区| 久久久久国产一区二区三区四区| 国产精品成人aaaaa网站| 最新中文字幕一区二区三区| 久久久精彩视频| 亚洲欧美国内爽妇网| 欧美日韩国产色综合一二三四 | 亚洲一区二区在线免费观看| 欧美电影免费| 亚洲国产精品成人精品| 久久综合九色综合欧美就去吻| 亚洲综合丁香| 国产精品久久久久久久久动漫| 91久久综合| 亚洲电影免费观看高清完整版| 久久久久国产精品午夜一区| 国产亚洲精品aa| 久久gogo国模啪啪人体图| 中文精品视频一区二区在线观看| 欧美精选午夜久久久乱码6080| 91久久视频| 亚洲韩国日本中文字幕| 欧美成人精品h版在线观看| 亚洲高清av在线| 欧美v日韩v国产v| 久久视频一区| 91久久在线播放| 最新成人av在线| 欧美日韩1区2区| 亚洲一二三区在线| 这里只有精品丝袜| 国产精品专区一| 久久精品国产精品亚洲| 欧美一区二区三区免费在线看| 国产日韩欧美亚洲一区| 久久久91精品国产一区二区三区 | 亚洲国产婷婷香蕉久久久久久99| 美女脱光内衣内裤视频久久影院 | 欧美精品播放| 中文在线不卡视频| 亚洲午夜精品久久| 国产视频精品va久久久久久| 久久成人免费电影| 久久免费午夜影院| 亚洲精品国产无天堂网2021| 亚洲精品国产无天堂网2021| 欧美日韩三级电影在线| 性8sex亚洲区入口| 久久婷婷色综合| 夜夜嗨av一区二区三区网站四季av | 午夜精品久久久久久久| 黑人中文字幕一区二区三区 | 欧美日韩视频一区二区| 午夜久久久久| 久久久久久久久综合| 亚洲精品一区在线观看| 一区二区三区日韩欧美| 国产一区日韩二区欧美三区| 欧美成人一区二免费视频软件| 欧美日韩国产免费| 欧美一区国产二区| 美女诱惑黄网站一区| 亚洲一区二区三区欧美| 久久成人免费网| 日韩一级精品| 欧美一区二区三区在线观看| 日韩视频精品在线观看| 欧美一级大片在线观看|