zoukankan      html  css  js  c++  java
  • render Target sample in UI

    LPDIRECT3DDEVICE9 pd3dDevice;
    LPDIRECT3DTEXTURE9 pRenderTexture = NULL;
    LPDIRECT3DTEXTURE9 pPyramideTexture = NULL;    
    LPDIRECT3DSURFACE9 pRenderSurface = NULL,pBackBuffer = NULL;
    
    void init()
    {
        pd3dDevice = g_pxD3d->GetDevice();
        D3DXCreateTextureFromFile(pd3dDevice,L"UI_BG_PERSONSHOP.dds",&pPyramideTexture);
    
        pd3dDevice->CreateTexture(512,
            512,
            1,
            D3DUSAGE_RENDERTARGET,
            D3DFMT_R5G6B5,
            D3DPOOL_DEFAULT,
            &pRenderTexture,
            NULL);
    
    
    }
    
    
    void Render()
    {    
        D3DXMATRIX matProjection,matOldProjection;
    
        VTXTYPE_2D_COLOR_TEX1 m_Vertices[4];    
    
        m_Vertices[0].x = 0;
        m_Vertices[1].x = 500;
        m_Vertices[2].x = m_Vertices[1].x;
        m_Vertices[3].x = m_Vertices[0].x;
    
        m_Vertices[0].y = 0;
        m_Vertices[1].y = m_Vertices[0].y;
        m_Vertices[2].y = 500;
        m_Vertices[3].y = m_Vertices[2].y;
    
        m_Vertices[0].z = 0;
        m_Vertices[1].z = m_Vertices[0].z;
        m_Vertices[2].z = m_Vertices[0].z;
        m_Vertices[3].z = m_Vertices[0].z;
    
        m_Vertices[0].tu = 0.0f; m_Vertices[0].tv = 0.0f;
        m_Vertices[1].tu = 1.0f; m_Vertices[1].tv = 0.0f;
        m_Vertices[2].tu = 1.0f; m_Vertices[2].tv = 1.0f;
        m_Vertices[3].tu = 0.0f; m_Vertices[3].tv = 1.0f;
    
    
        pRenderTexture->GetSurfaceLevel(0,&pRenderSurface);
    
        //D3DXMatrixPerspectiveFovLH(&matProjection,D3DX_PI / 4.0f,1,1,100);
        //pd3dDevice->GetTransform(D3DTS_PROJECTION,&matOldProjection);
        pd3dDevice->GetRenderTarget(0,&pBackBuffer);
    
        //render-to-texture
        //set new render target
        pd3dDevice->SetRenderTarget(0,pRenderSurface);
        //clear texture
        pd3dDevice->Clear(0,
            NULL,
            D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER,
            D3DCOLOR_XRGB(100,100,100),
            1.0f,
            0);
        pd3dDevice->BeginScene();
    
        pd3dDevice->SetTexture(0,pPyramideTexture);
    
        /*D3DXMatrixRotationY(&matRotationY,fRotation);
        D3DXMatrixTranslation(&matTranslation,0.0f,0.0f,5.0f);
        pd3dDevice->SetTransform(D3DTS_WORLD,
            &(matRotationY * matTranslation));*/
        //set projection matrix
        //pd3dDevice->SetTransform(D3DTS_PROJECTION,&matProjection);
    
        //pd3dDevice->SetStreamSource(0,pTriangleVB,0,sizeof(D3DVERTEX));
        pd3dDevice->SetFVF(VTXTYPE_2D_COLOR_TEX1::FVF);
        pd3dDevice->DrawPrimitiveUP(D3DPT_TRIANGLEFAN, 2, m_Vertices,    sizeof(VTXTYPE_2D_COLOR_TEX1));
    
    
        pd3dDevice->EndScene();
    
        //set back buffer
        pd3dDevice->SetRenderTarget(0,pBackBuffer);
        pd3dDevice->Clear(0,
            NULL,
            D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER,
            D3DCOLOR_XRGB(0,0,0),
            1.0f,
            0);
        pd3dDevice->BeginScene();
    
        //set rendered texture
        pd3dDevice->SetTexture(0,pRenderTexture);
    
        //pd3dDevice->SetTransform(D3DTS_WORLD,&matTranslation);
        //restore projection matrix
        //pd3dDevice->SetTransform(D3DTS_PROJECTION,&matOldProjection);
    
        //pd3dDevice->SetStreamSource(0,pQuadVB,0,sizeof(D3DVERTEX));
        //pd3dDevice->DrawPrimitiveUP(D3DPT_TRIANGLESTRIP,0,2);
        pd3dDevice->SetFVF(VTXTYPE_2D_COLOR_TEX1::FVF);
        pd3dDevice->DrawPrimitiveUP(D3DPT_TRIANGLEFAN, 2, m_Vertices,    sizeof(VTXTYPE_2D_COLOR_TEX1));
    
        RenderText();
    
        if(g_pTextRectItem)
            g_pTextRectItem->render(pd3dDevice);
    
        pd3dDevice->EndScene();
        pd3dDevice->Present(NULL,NULL,NULL,NULL);
    
    
    }
    
    void programExit(){
    
        pRenderSurface->Release();
        pRenderSurface = NULL;
    
        pBackBuffer->Release();
        pBackBuffer = NULL;    
    
        pRenderTexture->Release();
    }
  • 相关阅读:
    类加载器ClassLoader
    JAVA分别获取日期中的年、月、日
    sql 安全问题
    马尔科夫链
    触发器、锁、事务和事务控制
    索引、视图、存储过程、函数、游标
    字符集
    数据类型选择
    存储引擎
    错误:too many indices for array
  • 原文地址:https://www.cnblogs.com/oneDouble/p/2558097.html
Copyright © 2011-2022 走看看