资源简介

第6章 纹理映射基础 1、TextureBase 演示使用纹理贴图的基本步骤。 2、TexFilterMode 演示最近点采样和线性纹理过滤方式。在程序运行时,单击键盘上的数字键“1”,使用最近点采样纹理过滤方式,单击键盘上的数字键“2”,则使用线性纹理过滤。 3、MipTexture 演示如何创建和使用多级渐进纹理。程序运行时,单击键盘上的数字键“1”,则使用多级渐进纹理,单击数字键“2”,则使用单级别纹理。通过按下“↓”键和“↑”键可以放大和缩小显示的图形,从而可以仔细观察图像的变化,看到多级渐进纹理的效果。 4、TexAddressMode 演示不同纹理寻址模式的效果。程序运行时,单击键盘上的数字键“1”,使用重叠纹理寻址模式,单击键盘上的数字键“2”,使用镜像纹理寻址模式,单击键盘上的数字键“3”,使用夹取纹理寻址模式,单击键盘上的数字键“4” ,使用边框颜色纹理寻址模式。 5、TexRenderState 演示纹理阶段混合状态的使用。

资源截图

代码片段和文件信息

//=============================================================================
// Desc: 纹理影射基础
//=============================================================================

#include 

//-----------------------------------------------------------------------------
// Desc: 全局变量
//-----------------------------------------------------------------------------
LPDIRECT3D9             g_pD3D       = NULL;    //Direct3D对象
LPDIRECT3DDEVICE9       g_pd3dDevice = NULL;    //Direct3D设备对象
LPDIRECT3DVERTEXBUFFER9 g_pVB        = NULL;    //顶点缓冲区对象
LPDIRECT3DTEXTURE9      g_pTexture   = NULL;    //纹理对象


//-----------------------------------------------------------------------------
// Desc: 顶点结构
//-----------------------------------------------------------------------------
struct CUSTOMVERTEX
{
FLOAT x y z;    //顶点位置  
FLOAT uv ;   //顶点纹理坐标
};
#define D3DFVF_CUSTOMVERTEX   (D3DFVF_XYZ|D3DFVF_TEX1)


//-----------------------------------------------------------------------------
// Desc: 设置变换矩阵
//-----------------------------------------------------------------------------
VOID SetupMatrices()
{
    //创建并设置世界矩阵
    D3DXMATRIXA16 matWorld;
    D3DXMatrixIdentity( &matWorld );
    g_pd3dDevice->SetTransform( D3DTS_WORLD &matWorld );

//创建并设置观察矩阵
    D3DXVECTOR3 vEyePt( 0.0f 0.0f -10 );
    D3DXVECTOR3 vLookatPt( 0.0f 0.0f 0.0f );
    D3DXVECTOR3 vUpVec( 0.0f 1.0f 0.0f );
    D3DXMATRIXA16 matView;
    D3DXMatrixLookAtLH( &matView &vEyePt &vLookatPt &vUpVec );
    g_pd3dDevice->SetTransform( D3DTS_VIEW &matView );

//创建并设置投影矩阵
    D3DXMATRIXA16 matProj;
    D3DXMatrixPerspectiveFovLH( &matProj D3DX_PI/4 1.0f 1.0f 100.0f );
    g_pd3dDevice->SetTransform( D3DTS_PROJECTION &matProj );
}


//-----------------------------------------------------------------------------
// Desc: 初始化Direct3D
//-----------------------------------------------------------------------------
HRESULT InitD3D( HWND hWnd )
{
//创建Direct3D对象 该对象用于创建Direct3D设备对象
    if( NULL == ( g_pD3D = Direct3DCreate9( D3D_SDK_VERSION ) ) )
        return E_FAIL;

//设置D3DPRESENT_PARAMETERS结构 准备创建Direct3D设备对象
    D3DPRESENT_PARAMETERS d3dpp;
    ZeroMemory( &d3dpp sizeof(d3dpp) );
    d3dpp.Windowed = TRUE;
    d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD;
    d3dpp.BackBufferFormat = D3DFMT_UNKNOWN;

//创建Direct3D设备对象
    if( FAILED( g_pD3D->CreateDevice( D3DADAPTER_DEFAULT D3DDEVTYPE_HAL hWnd
                                      D3DCREATE_SOFTWARE_VERTEXPROCESSING
                                      &d3dpp &g_pd3dDevice ) ) )
    {
        return E_FAIL;
    }

//禁用照明效果
g_pd3dDevice->SetRenderState( D3DRS_LIGHTING FALSE ); 

//设置变换矩阵
SetupMatrices();

    return S_OK;
}


//-----------------------------------------------------------------------------
// Desc: 创建场景图形
//-----------------------------------------------------------------------------
HRESULT InitGriphics()
{

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件      39272  2007-04-02 16:54  06_第六章 纹理映射基础\01_Texturebase\texture.jpg

     文件       7400  2007-04-02 16:54  06_第六章 纹理映射基础\01_Texturebase\Texturebase.cpp

     文件      40960  2007-04-02 16:54  06_第六章 纹理映射基础\01_Texturebase\Texturebase.exe

     文件      33351  2007-04-02 16:54  06_第六章 纹理映射基础\01_Texturebase\Texturebase.JPG

     文件        910  2007-04-02 16:54  06_第六章 纹理映射基础\01_Texturebase\Texturebase.sln

     文件       8192  2007-04-02 16:54  06_第六章 纹理映射基础\01_Texturebase\Texturebase.suo

     文件       3479  2007-04-02 16:54  06_第六章 纹理映射基础\01_Texturebase\Texturebase.vcproj

     文件       7889  2007-04-02 16:54  06_第六章 纹理映射基础\02_TexFilterMode\TexFilterMode.cpp

     文件      40960  2007-04-02 16:54  06_第六章 纹理映射基础\02_TexFilterMode\TexFilterMode.exe

     文件      14625  2007-04-02 16:54  06_第六章 纹理映射基础\02_TexFilterMode\TexFilterMode.JPG

     文件        911  2007-04-02 16:54  06_第六章 纹理映射基础\02_TexFilterMode\TexFilterMode.sln

     文件       8704  2007-04-02 16:54  06_第六章 纹理映射基础\02_TexFilterMode\TexFilterMode.suo

     文件       3485  2007-04-02 16:54  06_第六章 纹理映射基础\02_TexFilterMode\TexFilterMode.vcproj

     文件       2026  2007-04-02 16:54  06_第六章 纹理映射基础\02_TexFilterMode\texture.jpg

     文件       9318  2007-04-02 16:54  06_第六章 纹理映射基础\03_MipTexture\MipTexture.cpp

     文件      40960  2007-04-02 16:54  06_第六章 纹理映射基础\03_MipTexture\MipTexture.exe

     文件      32012  2007-04-02 16:54  06_第六章 纹理映射基础\03_MipTexture\MipTexture.JPG

     文件        909  2007-04-02 16:54  06_第六章 纹理映射基础\03_MipTexture\MipTexture.sln

     文件       8192  2007-04-02 16:54  06_第六章 纹理映射基础\03_MipTexture\MipTexture.suo

     文件       3476  2007-04-02 16:54  06_第六章 纹理映射基础\03_MipTexture\MipTexture.vcproj

     文件      39272  2007-04-02 16:54  06_第六章 纹理映射基础\03_MipTexture\texture.jpg

     文件       9691  2007-04-02 16:54  06_第六章 纹理映射基础\04_TexAddressMode\TexAddressMode.cpp

     文件      40960  2007-04-02 16:54  06_第六章 纹理映射基础\04_TexAddressMode\TexAddressMode.exe

     文件      33054  2007-04-02 16:54  06_第六章 纹理映射基础\04_TexAddressMode\TexAddressMode.JPG

     文件        917  2007-04-02 16:54  06_第六章 纹理映射基础\04_TexAddressMode\TexAddressMode.sln

     文件       8192  2007-04-02 16:54  06_第六章 纹理映射基础\04_TexAddressMode\TexAddressMode.suo

     文件       3488  2007-04-02 16:54  06_第六章 纹理映射基础\04_TexAddressMode\TexAddressMode.vcproj

     文件      26550  2007-04-02 16:54  06_第六章 纹理映射基础\04_TexAddressMode\texture1.bmp

     文件      15606  2007-04-02 16:54  06_第六章 纹理映射基础\04_TexAddressMode\texture2.bmp

     文件      10046  2007-04-02 16:54  06_第六章 纹理映射基础\05_TexRenderState\TexStageState.cpp

............此处省略15个文件信息

评论

共有 条评论

相关资源