http://blog.csdn.net/loveclover

第二步:初始化屏幕中的几何形体

在渲染之前,Texture示例工程调用自定义函数InitGeometry,来创建一个纹理并初始化一个圆柱体。

纹理从是图片文件中获取的,下面的代码片段使用D3DXCreateTexureFromFile读取Banana.bmp文件来创建一个纹理。这个纹理将覆盖到圆柱体的表面上。

if( FAILED( D3DXCreateTextureFromFile( g_pd3dDevice, "Banana.bmp",
                                       
&g_pTexture ) ) )
    
return E_FAIL;

函数的第一个参数接受Direct3D的设备指针,用来渲染材质。第二个参数是指向ANSI字符串的指针,该字符串指明了要从哪个文件创建纹理。这里指定加载Banana.bmp文件。第三个参数是一个纹理对象指针。

当香蕉的纹理被加载好之后,下一步则是要创建圆柱体。下面的代码将圆柱体的顶点数据填充到顶点缓冲当中。注意每个顶点含有纹理坐标。

for( DWORD i=0; i<50; i++ )
{
    FLOAT theta 
= (2*D3DX_PI*i)/(50-1);
    
        pVertices[
2*i+0].position = D3DXVECTOR3( sinf(theta),-1.0f, cosf(theta) );
        pVertices[
2*i+0].color    = 0xffffffff;
#ifndef SHOW_HOW_TO_USE_TCI
        pVertices[
2*i+0].tu       = ((FLOAT)i)/(50-1);
        pVertices[
2*i+0].tv       = 1.0f;
#endif

        pVertices[
2*i+1].position = D3DXVECTOR3( sinf(theta), 1.0f, cosf(theta) );
        pVertices[
2*i+1].color    = 0xff808080;
#ifndef SHOW_HOW_TO_USE_TCI
        pVertices[
2*i+1].tu       = ((FLOAT)i)/(50-1);
        pVertices[
2*i+1].tv       = 0.0f;
#endif
}

每个顶点包含位置向量,颜色以及纹理坐标。上面的示例对每个顶点都设置了纹理坐标,这样一来材质将会很平滑的包裹在圆柱体的表面。

posted on 2008-03-19 11:47 Sure 阅读(256) 评论(0)  编辑 收藏 引用

只有注册用户登录后才能发表评论。
<2008年8月>
272829303112
3456789
10111213141516
17181920212223
24252627282930
31123456

导航

统计

常用链接

留言簿(5)

随笔分类

随笔档案

相册

搜索

最新评论

阅读排行榜

评论排行榜