博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
实现画茶壶,圆环,盒子,球体
阅读量:4992 次
发布时间:2019-06-12

本文共 2681 字,大约阅读时间需要 8 分钟。

声明:

//Mesh objects 网格对象

LPD3DXMESH g_teapot=NULL;
LPD3DXMESH g_cube=NULL;
LPD3DXMESH g_sphere=NULL;//球体
LPD3DXMESH g_torus=NULL;//圆环

bool InitializeObjects()

{
 // Set the projection matrix.
 D3DXMatrixPerspectiveFovLH(&g_projection, 45.0f,
  WINDOW_WIDTH/WINDOW_HEIGHT, 0.1f, 1000.0f);

 g_D3DDevice->SetTransform(D3DTS_PROJECTION, &g_projection);

 // Set default rendering states.  关闭光照

 g_D3DDevice->SetRenderState(D3DRS_LIGHTING, FALSE);
   
 //Create the objects  创建茶壶
    if(FAILED(D3DXCreateTeapot(g_D3DDevice,&g_teapot,NULL)))
  return false;
    //创建盒子
 if(FAILED(D3DXCreateBox(g_D3DDevice,2,2,2,&g_cube,NULL)))
  return false;
 //创建球体
    if(FAILED(D3DXCreateSphere(g_D3DDevice,1.5,25,25,
  &g_sphere,NULL)))
  return false;
 //创建圆环
    if(FAILED(D3DXCreateTorus(g_D3DDevice,0.5f,1.2f,25,25,
  &g_torus,NULL)))
  return false;

 // Define camera information.

 D3DXVECTOR3 cameraPos(0.0f, 0.0f, -8.0f);//摄像机的位置
 D3DXVECTOR3 lookAtPos(0.0f, 0.0f, 0.0f); //观察点
 D3DXVECTOR3 upDir(0.0f, 1.0f, 0.0f);     //以上方向为准

 // Build view matrix. 创建视图矩阵

 D3DXMatrixLookAtLH(&g_ViewMatrix, &cameraPos,
  &lookAtPos, &upDir);

 return true;

}

void RenderScene()

{
 // Clear the back buffer.清空后台缓存为指定色
 g_D3DDevice->Clear(0, NULL, D3DCLEAR_TARGET,
  D3DCOLOR_XRGB(0,0,0), 1.0f, 0);

 // Begin the scene.  Start rendering. 启动绘制

 g_D3DDevice->BeginScene();

 // Apply the view (camera).从世界空间到视图空间的视图转换

 g_D3DDevice->SetTransform(D3DTS_VIEW, &g_ViewMatrix);

 //Draw teapot

 D3DXMatrixTranslation(&g_WorldMatrix,2.0f,-2.0,0.0f);//平移矩阵
 g_D3DDevice->SetTransform(D3DTS_WORLD,&g_WorldMatrix);//从模型空间到世界空间的世界转换
 g_teapot->DrawSubset(0); //绘制茶壶

 // Draw Cube.

 D3DXMatrixTranslation(&g_WorldMatrix, -2.0f, -2.0, 0.0f); // 平移矩阵
 g_D3DDevice->SetTransform(D3DTS_WORLD, &g_WorldMatrix);   // 从模型空间到世界空间的世界转换
 g_cube->DrawSubset(0);    // 绘制盒子

 // Draw Sphere.

 D3DXMatrixTranslation(&g_WorldMatrix, 2.0f, 2.0, 0.0f);   // 平移矩阵
 g_D3DDevice->SetTransform(D3DTS_WORLD, &g_WorldMatrix);   // 从模型空间到世界空间的世界转换
 g_sphere->DrawSubset(0);  // 绘制球体

 // Draw Torus.

 D3DXMatrixTranslation(&g_WorldMatrix, -2.0f, 2.0, 0.0f);  // 平移矩阵
 g_D3DDevice->SetTransform(D3DTS_WORLD, &g_WorldMatrix);   // 从模型空间到世界空间的世界转换
 g_torus->DrawSubset(0);   // 绘制圆环

 // End the scene.  Stop rendering.

 g_D3DDevice->EndScene();

 // Display the scene.

 g_D3DDevice->Present(NULL, NULL, NULL, NULL);
}

void Shutdown()
{
 if(g_D3DDevice != NULL) g_D3DDevice->Release();
 if(g_D3D != NULL) g_D3D->Release();

 if(g_teapot != NULL) { g_teapot->Release(); g_teapot = NULL; }

 if(g_cube != NULL) { g_cube->Release(); g_cube = NULL; }
 if(g_sphere != NULL) { g_sphere->Release(); g_sphere = NULL; }
 if(g_torus != NULL) { g_torus->Release(); g_torus = NULL; }

// g_D3DDevice = NULL;

 //g_D3D = NULL;
}

转载于:https://www.cnblogs.com/batman425/p/3229965.html

你可能感兴趣的文章
如何用Java实现反转排序
查看>>
自己动手写字符串库函数 一(C语言实现) 分类: C语言学习 ...
查看>>
说说接口封装
查看>>
Linux Supervisor的安装与使用入门---SuSE
查看>>
C#将Word转换成PDF方法总结(基于Office和WPS两种方案)
查看>>
oracle查锁表
查看>>
PHP SSH2 不支持 IdentityFile
查看>>
eclipse 僵死/假死 问题排查及解决
查看>>
番茄时间
查看>>
四位计算机的原理及其实现【转】
查看>>
mediawiki简易安装文档
查看>>
Ubuntu server 命令备忘
查看>>
yum常用操作
查看>>
MES系统框架及MES开源框架|C/S框架网软著产品
查看>>
以boost::function和boost:bind取代虚函数
查看>>
linux 下启动SVN服务
查看>>
vue框架学习
查看>>
现代计算机接口实验 (三)8255实验
查看>>
spring——获取ClassLoader
查看>>
javascript函数
查看>>