zoukankan      html  css  js  c++  java
  • BillBoard技术(广告版)详解!(转)

    BillBoard技术(广告版)详解!(转)

    今天项目里突然要用到广告版技术。闲来就去摆渡搜索一下,发现这一方面的介绍很少,所以才有了今天这篇文章,也是为了服务于新手,更为了锻炼一下自己,现在把BillBoard技术详细的介绍一下。废话不说,下面进入正题!

    一:定义广告版矩形顶点结构和顶点格式,具体代码如下:

    struct customvertrx

    {

    float x,y,z;//顶点位置

    float u ,v;//定义顶点纹理坐标

    };

    #define D3DFVF_CUSTOMVERTEX (D3DFVF_XYZ|D3DFVF_TEX1)

    二:创建广告版矩形和纹理对象。

    //以下为创建你需要做广告版的顶点缓冲区

    V_RETURN(pd3dDevice->CreateVertexBuffer(4*sizeof(CUSTOMVERTEX,0,D3DFVF_CUSTOMVERTEX,

    D3DPOOL_MANAGED,&g_pTreeVB,NULL));

    CUSTOMVERTEX vertices2[] =

    {

    {-1.0f,0.0f,0.0f,0.0f,1.0f,},

    {-1.0f,2.5f,0.0f,0.0f,0.0f,},

    {1.0f,0.0f,0.0f,1.0f,1.0f,},

    {1.0f,2.5f,0.0f,1.0f,0.0f,},

    };

    VOID* pVertices2;

    if(FAILED(g_pTreeVB->Lock(0,sizeof(vertices2),(void**)&pVertices2,0)))

    return E_FAIL;

    memcpy(pVertices2,vertices2,sizeof(vertices2));

    g_pTreeVB->Unlock();

    //创建所需做广告版的纹理

    V_RETURN (D3DXCreateTextureFromFile(pd3dDevice,L"图片名字.bmp",&g_pTreeTex));

    接下来就是设置一些Alpha混合系数了,这些代码我的Blog前一章已经介绍过了,这里就不仔细说明了

    这一布尤为重要了,我们要根据观察的方向来广告版矩阵,通过旋转矩阵对象使它面向观察者。

    D3DXVECTOR3 vDir = vLookatpt - vEyePt;

    if(vDir.x>0.0f)

    D3DXMatrixRotationY(&matBillBoard,-atanf(vDir.z/vDir.x)+D3DX_PI2);

    else

    D3DXMatrixRotationY(&matBillBoard,-atanf(vDir.z/vDir.x)-D3DX_PI2);

    //广告版矩阵和你的图片矩阵做乘积

    g_matTree = matBillBoard*matTree;

    以上就是广告版的具体实现,请读者不要复制代码到编译器里,因为这是我在记事本里写的没通过编译难免会有错误!

  • 相关阅读:
    shell脚本
    vim使用快捷键
    logback.xml_appender配置
    vim配置文件
    sed
    使用linux服务器安装wordpress博客详细教程
    JDBC为什么要使用PreparedStatement而不是Statement
    Jsp技术介绍
    jsp的appilication.getInitParameter()方法无法获取到值的问题
    ubuntu 插网线无法上网解决方案
  • 原文地址:https://www.cnblogs.com/wonderKK/p/2240261.html
Copyright © 2011-2022 走看看