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

天行健 君子當自強而不息

D3D中的紋理映射(4)

該例程演示了如何設置紋理尋址模式。

截圖:

源程序:

 

/**************************************************************************************
  Allows the user to switch between the different texture address modes to see what they do. 
  Use the following keys:
           'W' - Switches to Wrap mode
           'B' - Switches to Border mode
           'C' - Switches to Clamp mode
           'M' - Switches to Mirror mode  
 *************************************************************************************
*/

#include 
"d3dUtility.h"

#pragma warning(disable : 
4100)

const int WIDTH  = 640;
const int HEIGHT = 480;

IDirect3DDevice9
*        g_d3d_device;
IDirect3DVertexBuffer9
* g_quad_vb;
IDirect3DTexture9
*        g_d3d_texture;

class cTextureVertex
{
public:
    
float m_x,  m_y,  m_z;
    
float m_nx, m_ny, m_nz;
    
float m_u, m_v; // texture coordinates    

    cTextureVertex() { }

    cTextureVertex(
float x,  float y,  float z,
                   
float nx, float ny, float nz,
                   
float u,  float v)
    {
        m_x  
= x;  m_y  = y;  m_z  = z;
        m_nx 
= nx; m_ny = ny; m_nz = nz;
        m_u  
= u;  m_v  = v;
    }    
};

const DWORD TEXTURE_VERTEX_FVF = D3DFVF_XYZ | D3DFVF_NORMAL | D3DFVF_TEX1;

////////////////////////////////////////////////////////////////////////////////////////////////////

bool setup()
{    
    
// create the quad vertex buffer and fill it with the quad geometry
    g_d3d_device->CreateVertexBuffer(6 * sizeof(cTextureVertex), D3DUSAGE_WRITEONLY, TEXTURE_VERTEX_FVF,
                                     D3DPOOL_MANAGED, 
&g_quad_vb, NULL);

    cTextureVertex
* vertices;

    g_quad_vb
->Lock(00, (void**)&vertices, 0);

    
// quad built from two triangles, note texture coordinate.

    vertices[
0= cTextureVertex(-1.0f-1.0f1.25f0.0f0.0f-1.0f0.0f3.0f);
    vertices[
1= cTextureVertex(-1.0f,  1.0f1.25f0.0f0.0f-1.0f0.0f0.0f);
    vertices[
2= cTextureVertex( 1.0f,  1.0f1.25f0.0f0.0f-1.0f3.0f0.0f);

    vertices[
3= cTextureVertex(-1.0f-1.0f1.25f0.0f0.0f-1.0f0.0f3.0f);
    vertices[
4= cTextureVertex( 1.0f,  1.0f1.25f0.0f0.0f-1.0f3.0f0.0f);
    vertices[
5= cTextureVertex( 1.0f-1.0f1.25f0.0f0.0f-1.0f3.0f3.0f);

    g_quad_vb
->Unlock();

    
// create the texture and set filters

    D3DXCreateTextureFromFile(g_d3d_device, 
"dx5_logo.bmp"&g_d3d_texture);

    g_d3d_device
->SetTexture(0, g_d3d_texture);

    g_d3d_device
->SetSamplerState(0, D3DSAMP_MAGFILTER, D3DTEXF_LINEAR);
    g_d3d_device
->SetSamplerState(0, D3DSAMP_MINFILTER, D3DTEXF_LINEAR);
    g_d3d_device
->SetSamplerState(0, D3DSAMP_MIPFILTER, D3DTEXF_POINT);

    
// don't use lighting for this sample
    g_d3d_device->SetRenderState(D3DRS_LIGHTING, FALSE);

    
// set the projection matrix
    D3DXMATRIX proj;
    D3DXMatrixPerspectiveFovLH(
&proj, D3DX_PI * 0.5f, (float)WIDTH/HEIGHT, 1.0f1000.0f);
    g_d3d_device
->SetTransform(D3DTS_PROJECTION, &proj);
    
    
return true;
}

void cleanup()
{    
    safe_release
<IDirect3DVertexBuffer9*>(g_quad_vb);
    safe_release
<IDirect3DTexture9*>(g_d3d_texture);
}

bool display(float time_delta)
{
    
// set wrap address mode
    if(GetAsyncKeyState('W'& 0x8000f)
    {
        g_d3d_device
->SetSamplerState(0, D3DSAMP_ADDRESSU, D3DTADDRESS_WRAP);
        g_d3d_device
->SetSamplerState(0, D3DSAMP_ADDRESSV, D3DTADDRESS_WRAP);
    }

    
// set border color address mode
    if(GetAsyncKeyState('B'& 0x8000f)
    {
        g_d3d_device
->SetSamplerState(0, D3DSAMP_ADDRESSU, D3DTADDRESS_BORDER);
        g_d3d_device
->SetSamplerState(0, D3DSAMP_ADDRESSV, D3DTADDRESS_BORDER);
        g_d3d_device
->SetSamplerState(0,  D3DSAMP_BORDERCOLOR, 0x000000ff);
    }

    
// set clamp address mode
    if(GetAsyncKeyState('C'& 0x8000f)
    {
        g_d3d_device
->SetSamplerState(0, D3DSAMP_ADDRESSU, D3DTADDRESS_CLAMP);
        g_d3d_device
->SetSamplerState(0, D3DSAMP_ADDRESSV, D3DTADDRESS_CLAMP);
    }

    
// set mirror address mode
    if(GetAsyncKeyState('M'& 0x8000f)
    {
        g_d3d_device
->SetSamplerState(0, D3DSAMP_ADDRESSU, D3DTADDRESS_MIRROR);
        g_d3d_device
->SetSamplerState(0, D3DSAMP_ADDRESSV, D3DTADDRESS_MIRROR);
    }    

    
// draw the scene

    g_d3d_device
->Clear(0, NULL, D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER, 0xffffffff1.0f0);

    g_d3d_device
->BeginScene();

    g_d3d_device
->SetStreamSource(0, g_quad_vb, 0sizeof(cTextureVertex));
    g_d3d_device
->SetFVF(TEXTURE_VERTEX_FVF);
    g_d3d_device
->DrawPrimitive(D3DPT_TRIANGLELIST, 02);
    
    g_d3d_device
->EndScene();

    g_d3d_device
->Present(NULL, NULL, NULL, NULL);

    
return true;
}

LRESULT CALLBACK wnd_proc(HWND hwnd, UINT msg, WPARAM word_param, LPARAM long_param)
{
    
switch(msg)
    {
    
case WM_DESTROY:
        PostQuitMessage(
0);
        
break;

    
case WM_KEYDOWN:
        
if(word_param == VK_ESCAPE)
            DestroyWindow(hwnd);
        
break;
    }

    
return DefWindowProc(hwnd, msg, word_param, long_param);
}

int WINAPI WinMain(HINSTANCE inst, HINSTANCE, PSTR cmd_line, int cmd_show)
{
    
if(! init_d3d(inst, WIDTH, HEIGHT, true, D3DDEVTYPE_HAL, &g_d3d_device))
    {
        MessageBox(NULL, 
"init_d3d() - failed."0, MB_OK);
        
return 0;
    }

    
if(! setup())
    {
        MessageBox(NULL, 
"Steup() - failed."0, MB_OK);
        
return 0;
    }

    enter_msg_loop(display);

    cleanup();
    g_d3d_device
->Release();

    
return 0;
}

 

下載源程序


posted on 2008-03-17 17:49 lovedday 閱讀(640) 評論(0)  編輯 收藏 引用


只有注冊用戶登錄后才能發表評論。
網站導航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


公告

導航

統計

常用鏈接

隨筆分類(178)

3D游戲編程相關鏈接

搜索

最新評論

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            乱人伦精品视频在线观看| 免费欧美在线视频| 一本色道久久88亚洲综合88 | 国产欧美视频一区二区三区| 亚洲福利一区| 久久精品国产91精品亚洲| 久久只有精品| 亚洲综合第一| 韩日在线一区| 国产真实久久| 一区二区免费看| 国产精品亚洲第一区在线暖暖韩国| 欧美激情亚洲综合一区| 久久av一区二区三区漫画| 亚洲一区免费| 欧美激情中文不卡| 影音先锋久久久| 9i看片成人免费高清| 久久成人国产精品| 一区二区高清视频| 国产一区二区三区免费观看| 国产精品拍天天在线| 99国产精品一区| 国产精品国产三级国产专区53| 久久综合伊人77777| 欧美另类综合| 久久精品国产69国产精品亚洲| 国产亚洲一区二区三区在线观看 | 欧美激情久久久久久| 亚洲国产日韩一级| 一本久道久久综合中文字幕| 亚洲午夜精品久久久久久浪潮 | 中文av字幕一区| 国产精品日韩欧美| 日韩亚洲欧美高清| 久久手机免费观看| 国产精品少妇自拍| 欧美成人福利视频| 欧美国产激情二区三区| 欧美黄色一级视频| 欧美福利视频在线观看| 欧美激情四色| 老司机久久99久久精品播放免费 | 欧美国产丝袜视频| 欧美成人久久| 欧美国产精品专区| 新狼窝色av性久久久久久| 欧美日韩精选| 精品999久久久| 亚洲欧美一区二区视频| 免费国产一区二区| 国产精品xxxxx| 一本久久a久久免费精品不卡| 蜜桃久久精品一区二区| 欧美一区免费| 国产精品h在线观看| 欧美1区免费| 久久久伊人欧美| 亚洲美女毛片| 国产人成精品一区二区三| 久久精品国产久精国产思思| 久久精品国产久精国产一老狼| 久久久久看片| 久久久久一区二区三区| 欧美在线首页| 久久精品二区三区| 国产在线视频不卡二| 亚洲天堂成人在线观看| 国产农村妇女毛片精品久久麻豆| 亚洲欧美大片| 午夜精品久久久久久久久久久久久 | 欧美亚洲一区二区在线| 亚洲免费观看高清完整版在线观看熊| 久久蜜桃av一区精品变态类天堂| av成人老司机| 欧美1区3d| 狂野欧美一区| 99热精品在线观看| 欧美一区二区三区视频免费| 国产婷婷一区二区| 亚洲毛片播放| 亚洲国产黄色| 在线视频你懂得一区二区三区| 久久综合给合| 国产日韩精品在线播放| 美女精品国产| 美女国内精品自产拍在线播放| 欧美日韩成人一区| 中文成人激情娱乐网| 国产手机视频一区二区| 性色av一区二区三区在线观看| 欧美日韩国产一级| 亚洲一区二区三区视频| 亚洲免费视频一区二区| 久久视频这里只有精品| 国产精品久久毛片a| 亚洲天堂久久| 欧美性猛交一区二区三区精品| 亚洲精品免费在线| 一区一区视频| 在线成人h网| 亚洲一区二区三区精品在线观看| 在线日本欧美| 久久精品国产v日韩v亚洲| 久久国产精品一区二区三区| 久久aⅴ国产紧身牛仔裤| 久久久一区二区| 亚洲国产精品久久精品怡红院| 在线观看日韩专区| 另类综合日韩欧美亚洲| 午夜精品福利一区二区蜜股av| 亚洲精品欧洲| 日韩午夜激情av| 久久成人精品无人区| 91久久精品日日躁夜夜躁欧美 | 欧美成人久久| 美脚丝袜一区二区三区在线观看| 午夜欧美大尺度福利影院在线看| 欧美亚洲综合在线| 亚洲第一区色| 国产一区二区三区四区三区四| 欧美极品影院| 日韩视频在线免费观看| 久久久久国产精品www| 日韩视频在线观看国产| 国产一区二区三区四区五区美女| 国产欧美日韩视频在线观看| 欧美一级一区| 国产一区二区你懂的| 一本久久综合亚洲鲁鲁五月天 | 亚洲美女在线国产| 欧美大片一区二区三区| 日韩一级精品| 亚洲国产欧美一区二区三区同亚洲 | 一本大道久久a久久精二百| 亚洲性夜色噜噜噜7777| 亚洲精品国产精品乱码不99按摩| 久久久99精品免费观看不卡| 性色av一区二区三区红粉影视| 欧美黑人多人双交| 一本色道久久精品| 久久精品国产久精国产一老狼| 久久激情一区| 亚洲毛片在线观看| 亚洲午夜久久久久久尤物 | 久久久久国产一区二区三区| 亚洲主播在线播放| 久久久一区二区三区| 亚洲国产精品毛片| 久久精品色图| 久久全球大尺度高清视频| 国产一区二区观看| 亚洲欧美日韩网| 亚洲天堂av综合网| 亚洲一区视频在线观看视频| 欧美国产一区二区在线观看| 久久久久久穴| 亚洲精美视频| 久久久免费观看视频| 国产精品成人观看视频国产奇米| 久久精品盗摄| 欧美人交a欧美精品| 亚洲片国产一区一级在线观看| 亚洲愉拍自拍另类高清精品| 亚洲精品中文字幕有码专区| 国产嫩草一区二区三区在线观看| 欧美一区二区三区在线观看视频| 欧美在线观看视频在线| 亚洲国产精品传媒在线观看| 久久成人人人人精品欧| 亚洲小视频在线| 欧美日韩综合不卡| 久久国产88| 免费毛片一区二区三区久久久| 亚洲国产一区二区精品专区| 欧美一激情一区二区三区| 亚洲毛片av| 国产精品一区二区男女羞羞无遮挡 | 欧美怡红院视频| 欧美日韩在线播放三区| 亚洲欧美日韩精品久久| 久久在线播放| 亚洲欧美日韩天堂一区二区| 欧美成人综合一区| 亚洲欧美日韩一区二区| 欧美日韩国产一中文字不卡| 亚洲少妇最新在线视频| 91久久精品国产91久久性色tv| 午夜精彩国产免费不卡不顿大片| 99riav久久精品riav| 国产区在线观看成人精品| 欧美激情一区在线观看| 久久天堂精品| 午夜免费电影一区在线观看| 亚洲欧美在线x视频| 国产美女精品视频| 久久久久久久91| 亚洲视屏一区| 欧美资源在线| 激情综合色综合久久综合|