admin 管理员组文章数量: 1184232
注意点
- 需要安装dx9.0和vs2019设置,可以参考这个
- 顶点缓存6个面中后面和下面是以左下角坐标逆时针写的,其他面都是顺时针的,这样导致画每个面的三角形按照顶点的渲染方式不一样,为什么后面和下面这样去渲染呢?如果6个面按照同样的方式就会有显示错误。
代码
- Vertex.h
structVertex{
Vertex(){
}Vertex(float x,float y,float z,float nx,float ny,float nz,float u,float v){
_x = x; _y = y; _z = z;
_nx = nx; _ny = ny; _nz = nz;
_u = u; _v = v;}float _x, _y, _z;float _nx, _ny, _nz;float _u, _v;};#defineFVF_VERTEX(D3DFVF_XYZ | D3DFVF_NORMAL | D3DFVF_TEX1)- Cube.h
#include<d3dx9.h>classCube{
public:Cube(IDirect3DDevice9* device);~Cube();booldraw(D3DXMATRIX* world, D3DMATERIAL9* mtrl, IDirect3DTexture9* tex);private:
IDirect3DDevice9* _device;
IDirect3DVertexBuffer9* _vb;
IDirect3DIndexBuffer9* _ib;};- Cube.cpp
#include"Cube.h"#include"d3dUtility.h"#include"Vertex.h"Cube::Cube(IDirect3DDevice9* device){
_device = device;//创建顶点缓存
device->CreateVertexBuffer(24*sizeof(Vertex), D3DUSAGE_WRITEONLY, FVF_VERTEX, D3DPOOL_MANAGED,&_vb,nullptr);
Vertex* v;
_vb->Lock(0,0,(void**)&v,0);//前面
v[0]=Vertex(-1.0f,-1.0f,-1.0f,0.0f,0.0f,-1.0f,0.0f,0.0f);
v[1]=Vertex(-1.0f,1.0f,-1.0f,0.0f,0.0f,-1.0f,0.0f,1.0f);
v[2]=Vertex(1.0f,1.0f,-1.0f,0.0f,0.0f,-1.0f,1.0f,1.0f);
v[3]=Vertex(1.0f,-1.0f,-1.0f,0.0f,0.0f,-1.0f,1.0f,0.0f);//后面
v[4]=Vertex(-1.0f,-1.0f,1.0f,0.0f,0.0f,1.0f,0.0f,0.0f);
v[5]=Vertex(1.0f,-1.0f,1.0f,0.0f,0.0f,1.0f,0.0f,1.0f);
v[6]=Vertex(1.0f,1.0f,1.0f,0.0f,0.0f,1.0f,1.0f,1.0f);
v[7]=Vertex(-1.0f,1.0f,1.0f,0.0f,0.0f,1.0f,1.0f,0.0f);//左面
v[8]=Vertex(-1.0f,-1.0f,1.0f,-1.0f,0.0f,0.0f,0.0f,0.0f);
v[9]=Vertex(-1.0f,1.0f,1.0f,-1.0f,0.0f,0.0f,0.0f,1.0f);
v[10]=Vertex(-1.0f,1.0f,-1.0f,-1.0f,0.0f,0.0f,1.0f,1.0f);
v[11]=Vertex(-1.0f,-1.0f,-1.0f,-1.0f,0.0f,0.0f,1.0f,0.0f);//右面
v[12]=Vertex(1.0f,-1.0f,-1.0f,1.0f,0.0f,0.0f,0.0f,0.0f);
v[13]=Vertex(1.0f,1.0f,-1.0f,1.0f,版权声明:本文标题:轻松上手:Flash中心里的立方体绘制技巧 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/b/1774493612a3571800.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论