D3DXCreateMeshFVF

首先创建一个ID3DXMesh接口。 ID3DXMesh接口的说明可以参数龙书。

这里主要是用代码来讲解:

#define VERTEX_FVF   (D3DFVF_XYZ | D3DFVF_TEX1)hr = D3DXCreateMeshFVF(12,24,D3DXMESH_MANAGED,VERTEX_FVF,m_pd3dDevice,&pMesh);VERTEX vertices[] = {//正y面?{-5.0f, -5.0f, 0.0f, 0,1}, {-5.0f, 5.0f, 0.0f, 0,0},{5.0f, 5.0f, 0.0f,1,0}, {5.0f, -5.0f, 0.0f, 1,1},  //侧¨¤面?r{5.0f, -5.0f, 0.0f, 0,1}, {5.0f, 5.0f, 0.0f,0,0}, {5.0f, 5.0f, 10.0f,1,0}, {5.0f, -5.0f, 10.0f, 1,1}, //后¨®面?{5.0f, -5.0f, 10.0f, 0,1}, {5.0f, 5.0f, 10.0f,0,0}, {-5.0f, 5.0f, 10.0f, 1,0},{-5.0f, -5.0f, 10.0f, 1,1}, {-5.0f, -5.0f, 10.0f, 0,1},{-5.0f, 5.0f, 10.0f, 0,0},{-5.0f, 5.0f, 0.0f, 1,0}, {-5.0f, -5.0f, 0.0f, 1,1},{-5.0f, 5.0f, 0.0f, 0,1},{-5.0f, 5.0f, 10.0f, 0,0},{5.0f, 5.0f, 10.0f, 1,0},{5.0f, 5.0f, 0.0f, 1,1},/*   {-5.0f, -5.0f, 0.0f, 0,1}, {-5.0f, -5.0f, 10.0f, 0,0}, {5.0f, -5.0f, 10.0f, 1,0}, {5.0f, -5.0f, 0.0f, 1,1}*/{-5.0f, -5.0f, 0.0f, 0,1}, {5.0f, -5.0f, 0.0f, 0,0},{5.0f, -5.0f, 10.0f, 1,0}, {-5.0f, -5.0f, 10.0f, 1,1},  //底下的面。需要用逆时针。不然会被剔除};把上面的顶点数据拷贝到 网格里面void* pBuffer;pMesh->LockVertexBuffer(0,(void**)&pBuffer);memcpy(pBuffer,vertices,sizeof(vertices));pMesh->UnlockVertexBuffer();接着创建 索引数据WORD* i = 0;   pMesh->LockIndexBuffer(0, (void**)&i);   // fill in the front face index data   i[0] = 0; i[1] = 1; i[2] = 2;   i[3] = 0; i[4] = 2; i[5] = 3;   // fill in the back face index data   i[6] = 4; i[7]  = 5; i[8]  = 6;   i[9] = 4; i[10] = 6; i[11] = 7;   // fill in the top face index data   i[12] = 8; i[13] =  9; i[14] = 10;   i[15] = 8; i[16] = 10; i[17] = 11;   // fill in the bottom face index data   i[18] = 12; i[19] = 13; i[20] = 14;   i[21] = 12; i[22] = 14; i[23] = 15;   // fill in the left face index data   i[24] = 16; i[25] = 17; i[26] = 18;   i[27] = 16; i[28] = 18; i[29] = 19;   // fill in the right face index data   i[30] = 20; i[31] = 21; i[32] = 22;   i[33] = 20; i[34] = 22; i[35] = 23;   pMesh->UnlockIndexBuffer();   //下面是创建了6个集合,创建多少个接口。后面就需要绘制几个集合
DWORD* attributeEuffer = 0;pMesh->LockAttributeBuffer(0,&attributeEuffer);for ( int a = 0; a < 2; a++){attributeEuffer[a] = 0;}for ( int b = 2; b < 4; b++){attributeEuffer[b] = 1;}for ( int c = 4; c < 6; c++){attributeEuffer[c] = 2;}//优化hr = pMesh->OptimizeInplace(         D3DXMESHOPT_ATTRSORT |   D3DXMESHOPT_COMPACT  |   D3DXMESHOPT_VERTEXCACHE,   &adjacencyBuffer[0],   0, 0, 0);   for ( int c = 6; c < 8; c++){attributeEuffer[c] = 3;}for ( int c = 8; c < 10; c++){attributeEuffer[c] = 4;}for ( int c = 10; c < 12; c++){attributeEuffer[c] = 5;}pMesh->UnlockAttributeBuffer();std::vector<DWORD> adjacencyBuffer(pMesh->GetNumFaces() * 3);   pMesh->GenerateAdjacency(0.0f, &adjacencyBuffer[0]);   for(int i = 0; i < 6; i++)   { pMesh->DrawSubset( i );   }

ID3DXMesh接口 创建自己的立方体网格相关推荐

  1. Java实现Runnable接口创建多线程

    Java实现Runnable接口创建多线程 通过继承Thread类,实现多线程,但是,这种方式有一定的局限性,因为,Java中只支持单继承,一个类一旦继承了某个父类,就无法再继承Thread类 比如, ...

  2. java多线程------实现Runnable接口创建多进程,实现资源共享

    //实现Runnable接口创建多进程,实现资源共享 package xian_cheng;public class Example05 {public static void main(String ...

  3. 云炬Android开发笔记 5-1,2网络框架接口创建

    1.网络框架接口创建 1.1 使用的是第三方的框架 [第三方框架]Retrofit,封装一个通用的框架,可以使用RxJava和RxAndroid进行封装,比较难,这里不做讲解: 1.2 restful ...

  4. 使用CommandLineRunner或ApplicationRunner接口创建bean

    在spring boot应用中,我们可以在程序启动之前执行任何任务.为了达到这个目的,我们需要使用CommandLineRunner或ApplicationRunner接口创建bean,spring ...

  5. .svc接口客户端调用_K8s:调用Java接口创建容器

    Extract Kubernetes是一个开源的,用于管理云平台中多个主机上的容器化的应用,Kubernetes的目标是让部署容器化的应用简单并且高效(powerful), Kubernetes提供了 ...

  6. 阿里api网关接口创建、发布、授权、调试

    阿里api网关接口创建.发布.授权.调试 下面会出现关于签名认证和阿里云api认证的概念以及认证方式的选择,如果这些还不是很清楚的可以看下我的上篇文章: <阿里云api网关的认证方式介绍以及选择 ...

  7. OPenGL笔记--创建三维图形(立方体)

    文章目录 一.前置知识 二.运行效果 三.具体代码 一.前置知识 通过之前的学习,我们已经知道了如何创建多边形,立方体实际就是多边形围起来的三维图形,例如: 椎体是4个三角形围起来的三维图形: 正方体 ...

  8. 用接口实现计算每个立方体的体积并输出结果的程序(接口及多态性及匿名方法的结合使用)

    题目: 有三个立方体,球体,长方体,圆柱体,用接口实现计算每个立方体的体积并输出结果的程序 1.首先是测试类 //package com.Lsheng.java;import java.util.Sc ...

  9. ElasticSearch 利用Java接口创建Mapping

    ElasticSearch 利用Java接口创建Mapping ElasticSearch Demo: package org.ssgroup;import java.io.IOException; ...

  10. html怎么做成3d正方体,使用css3创建动态3d立方体(html5实践)

    在今天的课程中,我将向大家介绍如何使用css3创建3d的立方体.大家可以通过下面的链接浏览实际效果,操作上下左右键,实现立方体的翻转效果. 下面我们开始介绍如何制作. 复制代码 代码如下: One f ...

最新文章

  1. SQLite Version3.3.6源代码文件结构
  2. 博弈论的局限性(博弈论的诡计)
  3. (转载)C++之tinyXML使用
  4. 实录 | 平安人寿资深算法工程师谢舒翼:智能问答系统探索与实践
  5. 网站数据库服务器怎么启动,启动数据库服务器
  6. c语言怎么减去一个16进制数,一个简单的有关问题:像这样的16进制数怎么转换得到...
  7. 处理 Maven 项目名称红色感叹号的问题
  8. 东芝硬盘插入台式机后滴滴响
  9. Java定义变量x初始值为3,JAVA 第一章
  10. Oracle Assets Additions API--Sample Script(Invoices)
  11. vue 背景透明度_Visual Studio 2017 设置透明背景图
  12. Sinevibes Plugins Bundle for Mac(Sinevibes合成器合集)
  13. go map二维数据追加
  14. html5shiv 无效,解决低版本IE关于html5新特性的兼容性问题html5shiv.js和Respond.js
  15. 社招腾讯,阿里,京东,必问知识点整理,常考知识点全在这里了!
  16. JS正则:按中英文逗号 中英文分号 回车 空格分隔/切割字符串
  17. 如何永久性取消WPS热点推广
  18. 生物信息学反卷积论文阅读
  19. 迁移学习和finetune的区别及迁移学习代码实现
  20. netstat –ano|findstr “port”命令

热门文章

  1. 旁枝末梢(我好像稍微理解了mvc和mvvm)
  2. hdu 5306 Gorgeous Sequence(区间最值更新+求和)
  3. 8.10 数据库安全性II Day28
  4. Django 配置访问静态文件
  5. c/c++ 宏中#和##的用法
  6. mysql版本引起的驱动问题
  7. 学习笔记:自己编译安装OpenCV+测试opencv安装是否成功
  8. iOS - OC 基本语法
  9. easyui datagrid 去掉外边框及行与行之间的横线标题字体
  10. 人工智能-baidu-aip语音识别(语音转文字)