ID3DXMesh接口 创建自己的立方体网格
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接口 创建自己的立方体网格相关推荐
- Java实现Runnable接口创建多线程
Java实现Runnable接口创建多线程 通过继承Thread类,实现多线程,但是,这种方式有一定的局限性,因为,Java中只支持单继承,一个类一旦继承了某个父类,就无法再继承Thread类 比如, ...
- java多线程------实现Runnable接口创建多进程,实现资源共享
//实现Runnable接口创建多进程,实现资源共享 package xian_cheng;public class Example05 {public static void main(String ...
- 云炬Android开发笔记 5-1,2网络框架接口创建
1.网络框架接口创建 1.1 使用的是第三方的框架 [第三方框架]Retrofit,封装一个通用的框架,可以使用RxJava和RxAndroid进行封装,比较难,这里不做讲解: 1.2 restful ...
- 使用CommandLineRunner或ApplicationRunner接口创建bean
在spring boot应用中,我们可以在程序启动之前执行任何任务.为了达到这个目的,我们需要使用CommandLineRunner或ApplicationRunner接口创建bean,spring ...
- .svc接口客户端调用_K8s:调用Java接口创建容器
Extract Kubernetes是一个开源的,用于管理云平台中多个主机上的容器化的应用,Kubernetes的目标是让部署容器化的应用简单并且高效(powerful), Kubernetes提供了 ...
- 阿里api网关接口创建、发布、授权、调试
阿里api网关接口创建.发布.授权.调试 下面会出现关于签名认证和阿里云api认证的概念以及认证方式的选择,如果这些还不是很清楚的可以看下我的上篇文章: <阿里云api网关的认证方式介绍以及选择 ...
- OPenGL笔记--创建三维图形(立方体)
文章目录 一.前置知识 二.运行效果 三.具体代码 一.前置知识 通过之前的学习,我们已经知道了如何创建多边形,立方体实际就是多边形围起来的三维图形,例如: 椎体是4个三角形围起来的三维图形: 正方体 ...
- 用接口实现计算每个立方体的体积并输出结果的程序(接口及多态性及匿名方法的结合使用)
题目: 有三个立方体,球体,长方体,圆柱体,用接口实现计算每个立方体的体积并输出结果的程序 1.首先是测试类 //package com.Lsheng.java;import java.util.Sc ...
- ElasticSearch 利用Java接口创建Mapping
ElasticSearch 利用Java接口创建Mapping ElasticSearch Demo: package org.ssgroup;import java.io.IOException; ...
- html怎么做成3d正方体,使用css3创建动态3d立方体(html5实践)
在今天的课程中,我将向大家介绍如何使用css3创建3d的立方体.大家可以通过下面的链接浏览实际效果,操作上下左右键,实现立方体的翻转效果. 下面我们开始介绍如何制作. 复制代码 代码如下: One f ...
最新文章
- SQLite Version3.3.6源代码文件结构
- 博弈论的局限性(博弈论的诡计)
- (转载)C++之tinyXML使用
- 实录 | 平安人寿资深算法工程师谢舒翼:智能问答系统探索与实践
- 网站数据库服务器怎么启动,启动数据库服务器
- c语言怎么减去一个16进制数,一个简单的有关问题:像这样的16进制数怎么转换得到...
- 处理 Maven 项目名称红色感叹号的问题
- 东芝硬盘插入台式机后滴滴响
- Java定义变量x初始值为3,JAVA 第一章
- Oracle Assets Additions API--Sample Script(Invoices)
- vue 背景透明度_Visual Studio 2017 设置透明背景图
- Sinevibes Plugins Bundle for Mac(Sinevibes合成器合集)
- go map二维数据追加
- html5shiv 无效,解决低版本IE关于html5新特性的兼容性问题html5shiv.js和Respond.js
- 社招腾讯,阿里,京东,必问知识点整理,常考知识点全在这里了!
- JS正则:按中英文逗号 中英文分号 回车 空格分隔/切割字符串
- 如何永久性取消WPS热点推广
- 生物信息学反卷积论文阅读
- 迁移学习和finetune的区别及迁移学习代码实现
- netstat –ano|findstr “port”命令
热门文章
- 旁枝末梢(我好像稍微理解了mvc和mvvm)
- hdu 5306 Gorgeous Sequence(区间最值更新+求和)
- 8.10 数据库安全性II Day28
- Django 配置访问静态文件
- c/c++ 宏中#和##的用法
- mysql版本引起的驱动问题
- 学习笔记:自己编译安装OpenCV+测试opencv安装是否成功
- iOS - OC 	基本语法
- easyui datagrid 去掉外边框及行与行之间的横线标题字体
- 人工智能-baidu-aip语音识别(语音转文字)