亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? main.cpp

?? DirectX 8 教程第二章代碼
?? CPP
字號:
#include <d3d8.h>
//一個指向DIRECT3D8對象的指針
LPDIRECT3D8 g_pD3D = NULL;
//一個指向DIRECT3DDEVICE8設備對象的指針
LPDIRECT3DDEVICE8 g_pD3DDevice = NULL; 
// Buffer to hold vertices
//聲明一個用于保存頂點的緩沖區
LPDIRECT3DVERTEXBUFFER8 g_pVertexBuffer = NULL;


struct CUSTOMVERTEX
{
	// The transformed position for the vertex.
	// 頂點坐標的變換
    FLOAT x, y, z, rhw;		
    // The vertex colour.
	//頂點顏色
	DWORD colour;			
	
};

#define D3DFVF_CUSTOMVERTEX (D3DFVF_XYZRHW|D3DFVF_DIFFUSE)

#define SafeRelease(pObject) if(pObject != NULL) {pObject->Release(); pObject=NULL;}

//初始化D3D對象
HRESULT InitialiseD3D(HWND hWnd)
{
    //First of all, create the main D3D object. If it is created successfully we 
    //should get a pointer to an IDirect3D8 interface.
    //構造一個D3D對象
	g_pD3D = Direct3DCreate8(D3D_SDK_VERSION);
    if(g_pD3D == NULL)
    {
        return E_FAIL;
    }

    //Get the current display mode
	//得到現實模式
    D3DDISPLAYMODE d3ddm;
    if(FAILED(g_pD3D->GetAdapterDisplayMode(D3DADAPTER_DEFAULT, &d3ddm)))
    {
        return E_FAIL;
    }

    //Create a structure to hold the settings for our device
	//申明一個D3DPRESENT_PARAMETERS結構體用來保存當前顯示設備設置
    D3DPRESENT_PARAMETERS d3dpp; 
    ZeroMemory(&d3dpp, sizeof(d3dpp));

    //Fill the structure. 
    //We want our program to be windowed, and set the back buffer to a format
    //that matches our current display mode
	//填充結構體,用于顯示當前顯示模式模式
	//窗體模式
    d3dpp.Windowed = TRUE;
	//
    d3dpp.SwapEffect = D3DSWAPEFFECT_COPY_VSYNC;
    d3dpp.BackBufferFormat = d3ddm.Format;

    //Create a Direct3D device.
	//創建設備對象
    if(FAILED(g_pD3D->CreateDevice( D3DADAPTER_DEFAULT, 
								    D3DDEVTYPE_HAL, 
									hWnd, 
                                    D3DCREATE_SOFTWARE_VERTEXPROCESSING, 
									&d3dpp, 
									&g_pD3DDevice)))
    {
        return E_FAIL;
    }
    
    return S_OK;
}

//初始化頂點緩沖區
HRESULT InitialiseVertexBuffer()
{
	VOID* pVertices;
	//保存三角形各個頂點以及它們的顏色
	//Store each point of the triangle together with it's colour
	CUSTOMVERTEX cvVertices[] =
	{
		{250.0f, 100.0f, 0.5f, 1.0f, D3DCOLOR_XRGB(255, 0, 0),},	//Vertex 1 - Red	(250, 100)
		{400.0f, 350.0f, 0.5f, 1.0f, D3DCOLOR_XRGB(0, 255, 0),},	//Vertex 2 - Green	(400, 350)
		{100.0f, 350.0f, 0.5f, 1.0f, D3DCOLOR_XRGB(0, 0, 255),},	//Vertex 3 - Blue	(100, 350)
        {400.0f, 100.0f, 0.5f, 1.0f, D3DCOLOR_XRGB(255, 0, 0),},
		{400.0f, 350.0f, 0.5f, 1.0f, D3DCOLOR_XRGB(0, 255, 0),},
		{100.0f, 350.0f, 0.5f, 1.0f, D3DCOLOR_XRGB(0, 0, 255),},
	};
     //從設備創建頂點緩沖
	//Create the vertex buffer from our device
	if(FAILED(g_pD3DDevice->CreateVertexBuffer(6 * sizeof(CUSTOMVERTEX),//
                                               0, D3DFVF_CUSTOMVERTEX,
                                               D3DPOOL_DEFAULT, &g_pVertexBuffer)))
	{
		return E_FAIL;
	}

	//得到指向頂點緩沖的指針并鎖定頂點緩沖
	//Get a pointer to the vertex buffer vertices and lock the vertex buffer
	if(FAILED(g_pVertexBuffer->Lock(0, sizeof(cvVertices), (BYTE**)&pVertices, 0)))
	{
		return E_FAIL;
	}
    //拷貝保存在cvVertices中的值到頂點緩沖中
	//Copy our stored vertices values into the vertex buffer
	memcpy(pVertices, cvVertices, sizeof(cvVertices));
    //解除頂點緩沖的鎖定
	//Unlock the vertex buffer
	g_pVertexBuffer->Unlock();

    return S_OK;
}

void Render()
{
    if(g_pD3DDevice == NULL)
    {
        return;
    }
    //清空背景緩沖為黑色
    //Clear the backbuffer to black
    g_pD3DDevice->Clear( 0, 
						 NULL, 
						 D3DCLEAR_TARGET, 
						 D3DCOLOR_XRGB(0, 0, 0), 
						 1.0f, 
						 0
						);
    
    //Begin the scene
	//開始場景渲染
    g_pD3DDevice->BeginScene();
    
     //渲染三角形
    //Rendering our triangle
	//邦定頂點緩沖到設備數據流中
	g_pD3DDevice->SetStreamSource( 0,  //指定數據流,范圍從0-Streams-1 
								   g_pVertexBuffer,  //指向IDirect3DVertexBuffer8接口返回對象的指針,描述所綁定到的數據流對象
								   sizeof(CUSTOMVERTEX));//頂點緩沖大小
	//設置頂點陰影模式
	g_pD3DDevice->SetVertexShader(D3DFVF_CUSTOMVERTEX);
	//頂點緩存渲染頂點
	g_pD3DDevice->DrawPrimitive( D3DPT_TRIANGLELIST,
							     0, 
								 2
								);


    //End the scene
    g_pD3DDevice->EndScene();
    //將后緩沖設置到前緩沖
    //Filp the back and front buffers so that whatever has been rendered on the back buffer
    //will now be visible on screen (front buffer).
    g_pD3DDevice->Present(NULL, NULL, NULL, NULL);
}

void CleanUp()
{
	SafeRelease(g_pVertexBuffer);
	SafeRelease(g_pD3DDevice);
	SafeRelease(g_pD3D);
}

void GameLoop()
{
    //Enter the game loop
	//開始游戲循環
    MSG msg; 
    BOOL fMessage;

    PeekMessage( &msg, 
				 NULL, 
				 0U, 
				 0U, 
				 PM_NOREMOVE);
    
    while(msg.message != WM_QUIT)
    {
        fMessage = PeekMessage(&msg, NULL, 0U, 0U, PM_REMOVE);

        if(fMessage)
        {
            //Process message
            TranslateMessage(&msg);
            DispatchMessage(&msg);
        }
        else
        {
            //No message to process, so render the current scene
            Render();
        }

    }
}

//The windows message handler
//windows消息處理函數
LRESULT WINAPI WinProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
    switch(msg)
    {
        case WM_DESTROY:
			//系統的退出消息
            PostQuitMessage(0);
            return 0;
        break;
        case WM_KEYUP: 
            switch (wParam)
            { 
                case VK_ESCAPE:
                    //User has pressed the escape key, so quit
					//當按下escape鍵時銷毀hWnd指向的窗體
                    DestroyWindow(hWnd);
                    return 0;
                break;
            } 
        break;

    }
          //默認的系統消息處理函數
    return DefWindowProc(hWnd, msg, wParam, lParam);
}

//Application entry point
INT WINAPI WinMain(HINSTANCE hInst, HINSTANCE, LPSTR, INT)
{
      //Register the window class
	//用于注冊windows窗體類的設置
    WNDCLASSEX wc = {sizeof(WNDCLASSEX), CS_CLASSDC, WinProc, 0L, 0L, 
                     GetModuleHandle(NULL), NULL, NULL, NULL, NULL,
                     "DX Project 2", NULL};
    RegisterClassEx(&wc);

  	
	//Set the mouse pointer to an arrow
	//設置鼠標指針
    HWND hWnd = CreateWindow("DX Project 2", "www.andypike.com: Tutorial 2", 
                              WS_OVERLAPPEDWINDOW, 50, 50, 500, 500,
                              GetDesktopWindow(), NULL, wc.hInstance, NULL);

	//Initialize Direct3D
	//初始化Direct3D對象
    if(SUCCEEDED(InitialiseD3D(hWnd)))
    { 
        //Show our window
		//顯示窗體
        ShowWindow(hWnd, SW_SHOWDEFAULT);
        UpdateWindow(hWnd);

		//刷新窗體顯示
		if(SUCCEEDED(InitialiseVertexBuffer()))
		{
		//Start game running: Enter the game loop
		//進入游戲循環
			GameLoop();
		}
    }
    
    //清理資源
    CleanUp();
    //取消窗體類注冊
    UnregisterClass("DX Project 2", wc.hInstance);
    
    return 0;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
99精品视频一区二区| 一区二区激情小说| 亚洲成人自拍一区| 久久久久久久久久久久久夜| 精品88久久久久88久久久| 国产精品色婷婷| 亚洲激情av在线| 日韩专区欧美专区| 国产成人精品综合在线观看| 91在线精品一区二区三区| 国产精品主播直播| 国产精品18久久久久久久久久久久 | 久久免费的精品国产v∧| 久久国产成人午夜av影院| 日韩高清在线电影| 另类小说图片综合网| 成人在线视频一区| 欧美主播一区二区三区美女| 欧美性感一区二区三区| 欧美精品一区二区三区蜜桃视频 | 2024国产精品| 国产精品久久久久久妇女6080 | 91精品国产综合久久香蕉的特点| 日韩一区二区免费在线电影| 国产精品三级视频| 性做久久久久久久久| 久久成人免费日本黄色| 丁香啪啪综合成人亚洲小说| 不卡的电视剧免费网站有什么| 日本久久电影网| 精品欧美黑人一区二区三区| 国产精品日韩精品欧美在线| 亚洲妇熟xx妇色黄| 国产suv精品一区二区三区| 欧美三区在线观看| 久久女同精品一区二区| 亚洲男人天堂一区| 国产综合久久久久久鬼色| 在线免费精品视频| 欧美一区二区三区白人| 亚洲精品成人天堂一二三| 九九热在线视频观看这里只有精品| www.亚洲激情.com| 国产亚洲制服色| 日韩中文字幕麻豆| 色综合久久九月婷婷色综合| 国产午夜三级一区二区三| 午夜精品久久久久久久久| 成人激情黄色小说| 欧美精品1区2区| 亚洲第一狼人社区| av亚洲精华国产精华| 日韩精品最新网址| 日产国产欧美视频一区精品 | 国产精品乱码一区二三区小蝌蚪| 婷婷久久综合九色综合伊人色| 成人综合婷婷国产精品久久蜜臀| 精品国产91乱码一区二区三区| 亚洲欧美另类久久久精品2019| 国产一区二区三区四区在线观看| 欧美在线视频日韩| 一区二区三区加勒比av| 成人一区在线观看| 日韩美一区二区三区| 美国十次了思思久久精品导航| 欧洲一区二区三区在线| 国产精品亲子乱子伦xxxx裸| 久久99热这里只有精品| 欧美日韩一区不卡| 亚洲自拍偷拍九九九| 风流少妇一区二区| 国产精品日日摸夜夜摸av| 国产乱妇无码大片在线观看| 欧美一区二区三区啪啪| 蜜桃久久精品一区二区| 欧美精品高清视频| 亚洲一区二区三区在线| 99久久99久久久精品齐齐 | 成人精品视频网站| 日韩精品一区二区三区三区免费| 性感美女久久精品| 欧美自拍偷拍一区| 亚洲综合一区二区| 色婷婷av一区二区三区大白胸| 亚洲日本乱码在线观看| 99精品桃花视频在线观看| 国产精品久久久久一区| 精品一区二区在线看| 国产亚洲人成网站| 国产高清不卡一区二区| 久久精品人人做人人爽人人| 不卡的av电影| 最新热久久免费视频| 99精品视频一区| 亚洲成av人片一区二区三区 | 亚洲aaa精品| 欧美日韩在线电影| 蜜臀久久99精品久久久久宅男| 91精品视频网| 久久国产人妖系列| 精品国内二区三区| av在线播放不卡| 亚洲综合男人的天堂| 欧美日本一道本在线视频| 久久99国产精品尤物| 久久先锋影音av| 成人动漫一区二区三区| 亚洲精品成人在线| 7777精品伊人久久久大香线蕉完整版 | 日韩av一区二| 精品久久久网站| 国模无码大尺度一区二区三区| 中文字幕一区二区三区在线观看 | 亚洲婷婷综合色高清在线| 色88888久久久久久影院按摩 | 久久国产精品无码网站| 久久精品视频一区二区三区| 99在线热播精品免费| 亚洲一区二区三区小说| 日韩欧美电影一二三| 国产一区啦啦啦在线观看| 日本一区二区电影| 337p亚洲精品色噜噜| 国产在线精品一区二区夜色| 中文字幕亚洲区| 7878成人国产在线观看| 国产一区在线不卡| 一区二区三区视频在线观看| 欧美一区二区精品在线| www.爱久久.com| 午夜欧美视频在线观看| 久久午夜老司机| 99久久777色| 久久精品国产成人一区二区三区| 欧美综合色免费| 国产一区二区中文字幕| 午夜精品久久一牛影视| 国产清纯在线一区二区www| 欧美日韩一区成人| 日韩在线a电影| 亚洲乱码中文字幕| 精品国精品国产尤物美女| 成人午夜在线视频| 日本亚洲三级在线| 中文字幕在线观看不卡视频| 7777精品伊人久久久大香线蕉最新版| av在线这里只有精品| 蜜臀99久久精品久久久久久软件| 亚洲欧洲av另类| 久久综合久久鬼色中文字| 91福利在线免费观看| 国产精品一级片在线观看| 日韩不卡手机在线v区| 亚洲精品成人少妇| 亚洲精品一区二区三区福利| 91在线看国产| 国产成人精品免费一区二区| 亚洲v精品v日韩v欧美v专区 | 成人免费高清在线观看| 美女爽到高潮91| 日韩 欧美一区二区三区| 一区二区成人在线视频 | 欧亚洲嫩模精品一区三区| 99久久免费精品高清特色大片| 国产一区激情在线| 极品少妇xxxx精品少妇| 蜜臀av一区二区在线观看| 同产精品九九九| 视频在线在亚洲| 午夜精品视频在线观看| 亚洲一区二区美女| 亚洲一区二区免费视频| 一区二区三区丝袜| 亚洲综合在线第一页| 亚洲精品视频自拍| 一区二区三区成人在线视频| 亚洲美女在线一区| 一区二区三区影院| 亚洲一级二级在线| 亚洲一区二区在线免费看| 亚洲一区二区三区四区的| 亚洲综合色自拍一区| 亚洲国产中文字幕在线视频综合 | 欧美嫩在线观看| 欧美剧情片在线观看| 91精品国产入口| 日韩一区二区在线看| 日韩精品中文字幕在线一区| 日韩欧美三级在线| 久久久精品综合| 国产精品剧情在线亚洲| 有坂深雪av一区二区精品| 亚洲成人动漫在线观看| 天天色 色综合| 久久99精品视频| 国产一区二区精品久久99| 国产91精品精华液一区二区三区| 国产91对白在线观看九色| av电影在线观看一区| 91九色02白丝porn|