zoukankan      html  css  js  c++  java
  • Direct3D 9学习笔记(4)基本顶点绘制呈现

    http://www.cnblogs.com/Clingingboy/archive/2012/07/27/2611752.html

    接上

    六.绘制准备工作

    为绘制流水线提供数据

    Device->SetStreamSource(0, Triangle, 0, sizeof(Vertex));
    Device->SetFVF(Vertex::FVF);
    

    image

    七.绘制图形

    bool Display(float timeDelta)
    {
        if( Device )
        {
            Device->Clear(0, 0, D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER, 0xffffffff, 1.0f, 0);
            Device->BeginScene();
    
            Device->SetStreamSource(0, Triangle, 0, sizeof(Vertex));
            Device->SetFVF(Vertex::FVF);
    
            // Draw one triangle.
            Device->DrawPrimitive(D3DPT_TRIANGLELIST, 0, 1);
    
            Device->EndScene();
            Device->Present(0, 0, 0, 0);
        }
        return true;
    }
    

    1.Clear方法清除病设置背景
    2.在绘制图形前后调用BeginScene和EndScene方法
    3.使用DrawPrimitive和DrawIndexedPrimitive方法根据顶点坐标绘制图形

    3.1DrawPrimitive

    image

    3.2DrawIndexedPrimitive

    image

    以上便创建了一个简单的三角形

    image

    八.绘制一个立方体

    1.准备顶点坐标和索引坐标

    //
    // Fill the buffers with the cube data.
    //
    
    // define unique vertices:
    Vertex* vertices;
    VB->Lock(0, 0, (void**)&vertices, 0);
    
    // vertices of a unit cube
    vertices[0] = Vertex(-1.0f, -1.0f, -1.0f);
    vertices[1] = Vertex(-1.0f,  1.0f, -1.0f);
    vertices[2] = Vertex( 1.0f,  1.0f, -1.0f);
    vertices[3] = Vertex( 1.0f, -1.0f, -1.0f);
    vertices[4] = Vertex(-1.0f, -1.0f,  1.0f);
    vertices[5] = Vertex(-1.0f,  1.0f,  1.0f);
    vertices[6] = Vertex( 1.0f,  1.0f,  1.0f);
    vertices[7] = Vertex( 1.0f, -1.0f,  1.0f);
    
    VB->Unlock();
    
    // define the triangles of the cube:
    WORD* indices = 0;
    IB->Lock(0, 0, (void**)&indices, 0);
    
    // front side
    indices[0]  = 0; indices[1]  = 1; indices[2]  = 2;
    indices[3]  = 0; indices[4]  = 2; indices[5]  = 3;
    
    // back side
    indices[6]  = 4; indices[7]  = 6; indices[8]  = 5;
    indices[9]  = 4; indices[10] = 7; indices[11] = 6;
    
    // left side
    indices[12] = 4; indices[13] = 5; indices[14] = 1;
    indices[15] = 4; indices[16] = 1; indices[17] = 0;
    
    // right side
    indices[18] = 3; indices[19] = 2; indices[20] = 6;
    indices[21] = 3; indices[22] = 6; indices[23] = 7;
    
    // top
    indices[24] = 1; indices[25] = 5; indices[26] = 6;
    indices[27] = 1; indices[28] = 6; indices[29] = 2;
    
    // bottom
    indices[30] = 4; indices[31] = 0; indices[32] = 3;
    indices[33] = 4; indices[34] = 3; indices[35] = 7;
    
    IB->Unlock();
    

    2.绘制图形

    //
    // draw the scene:
    //
    Device->Clear(0, 0, D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER, 0xffffffff, 1.0f, 0);
    Device->BeginScene();
    
    Device->SetStreamSource(0, VB, 0, sizeof(Vertex));
    Device->SetIndices(IB);
    Device->SetFVF(Vertex::FVF);
    
    // Draw cube.
    Device->DrawIndexedPrimitive(D3DPT_TRIANGLELIST, 0, 0, 8, 0, 12);
    
    Device->EndScene();
    Device->Present(0, 0, 0, 0);
    

    image

    九.内置图形

    WZ_8WYK@CRF(36U4BMQ9F[T

    其会返回一个ID3DXMesh接口,调用其DrawSubset方法来绘制图形

  • 相关阅读:
    Source Maps简介
    JavaScript数据结构——图的实现
    JavaScript数据结构——树的实现
    JavaScript数据结构——字典和散列表的实现
    JavaScript数据结构——集合的实现与应用
    [转]通过设置nginx的client_max_body_size解决nginx+php上传大文件的问题
    安卓刷量技术揭秘
    【转】让Bootstrap 3兼容IE8浏览器
    [LINK]Python服务器开发一:python基础
    [LINK]用Python计算昨天、今天和明天的日期时间
  • 原文地址:https://www.cnblogs.com/Clingingboy/p/2626628.html
Copyright © 2011-2022 走看看