顶点数据的生成

  1. bool YfBuildBoxVertices
  2. (
  3. Yreal extentX,
  4. Yreal extentY,
  5. Yreal extentZ,
  6. YeOriginPose originPose,
  7. Yuint vertexStriding,
  8. Yuint vertexPos,
  9. void* pVerticesBuffer
  10. )
  11. {
  12. if (!pVerticesBuffer)
  13. {
  14. return false;
  15. }
  16.  
  17. Yuint numVertices = ;
  18.  
  19. // 顶点赋值
  20. char* vertexPtr = (char*)pVerticesBuffer + vertexPos;
  21.  
  22. YsVector3* curVertexPtr = NULL;
  23. YsVector3* curNormalPtr = NULL;
  24. YsVector2* curTexcoordPtr = NULL;
  25.  
  26. Yuint nOffset = ;
  27.  
  28. YsVector3 vOriginOffset(-extentX / , -extentY / , -extentZ / );
  29. if (originPose == YE_ORIGIN_POSE_TOP)
  30. {
  31. vOriginOffset.y = -extentY;
  32. }
  33. else if (originPose == YE_ORIGIN_POSE_BOTTOM)
  34. {
  35. vOriginOffset.y = 0.0f;
  36. }
  37.  
  38. for (Yuint k = ; k < ; k++)
  39. {
  40. for (Yuint j = ; j < ; j++)
  41. {
  42. for (Yuint i = ; i < ; i++)
  43. {
  44. nOffset = (k* + j* + i) * vertexStriding;
  45. curVertexPtr = (YsVector3*)(vertexPtr + nOffset);
  46. curVertexPtr->x = extentX*i + vOriginOffset.x;
  47. curVertexPtr->z = extentZ*j + vOriginOffset.z;
  48. curVertexPtr->y = extentY*k + vOriginOffset.y;
  49. }
  50. }
  51. }
  52.  
  53. return true;
  54. }

三角形索引数据的生成

  1. bool YfBuildBoxTriIndices
  2. (
  3. YeIndexType indexType,
  4. Yuint indexStriding,
  5. Yuint indexPos,
  6. void* pTriIndicesBuffer
  7. )
  8. {
  9. if (!pTriIndicesBuffer)
  10. {
  11. return false;
  12. }
  13.  
  14. char* indexPtr = (char*)pTriIndicesBuffer + indexPos;
  15. if (indexType == YE_INDEX_16_BIT)
  16. {
  17. YsTriIndex16* triIndexPtr[];
  18. for (Yuint i = ; i < ; i++)
  19. {
  20. triIndexPtr[i] = (YsTriIndex16*)(indexPtr + i * indexStriding);
  21. }
  22.  
  23. // bottom
  24. triIndexPtr[]->index0 = ; triIndexPtr[]->index1 = ; triIndexPtr[]->index2 = ;
  25. triIndexPtr[]->index0 = ; triIndexPtr[]->index1 = ; triIndexPtr[]->index2 = ;
  26.  
  27. // top
  28. triIndexPtr[]->index0= ; triIndexPtr[]->index1= ; triIndexPtr[]->index2= ;
  29. triIndexPtr[]->index0= ; triIndexPtr[]->index1= ; triIndexPtr[]->index2= ;
  30.  
  31. // front side
  32. triIndexPtr[]->index0 = ; triIndexPtr[]->index1 = ; triIndexPtr[]->index2 = ;
  33. triIndexPtr[]->index0 = ; triIndexPtr[]->index1 = ; triIndexPtr[]->index2 = ;
  34.  
  35. // back side
  36. triIndexPtr[]->index0 = ; triIndexPtr[]->index1 = ; triIndexPtr[]->index2 = ;
  37. triIndexPtr[]->index0 = ; triIndexPtr[]->index1 = ; triIndexPtr[]->index2 = ;
  38.  
  39. // right side
  40. triIndexPtr[]->index0 = ; triIndexPtr[]->index1 = ; triIndexPtr[]->index2 = ;
  41. triIndexPtr[]->index0 = ; triIndexPtr[]->index1 = ; triIndexPtr[]->index2 = ;
  42.  
  43. // left side
  44. triIndexPtr[]->index0 = ; triIndexPtr[]->index1 = ; triIndexPtr[]->index2 = ;
  45. triIndexPtr[]->index0 = ; triIndexPtr[]->index1 = ; triIndexPtr[]->index2 = ;
  46. }
  47. else
  48. {
  49. YsTriIndex32* triIndexPtr[];
  50. for (Yuint i = ; i < ; i++)
  51. {
  52. triIndexPtr[i] = (YsTriIndex32*)(indexPtr + i * indexStriding);
  53. }
  54.  
  55. // bottom
  56. triIndexPtr[]->index0 = ; triIndexPtr[]->index1 = ; triIndexPtr[]->index2 = ;
  57. triIndexPtr[]->index0 = ; triIndexPtr[]->index1 = ; triIndexPtr[]->index2 = ;
  58.  
  59. // top
  60. triIndexPtr[]->index0= ; triIndexPtr[]->index1= ; triIndexPtr[]->index2= ;
  61. triIndexPtr[]->index0= ; triIndexPtr[]->index1= ; triIndexPtr[]->index2= ;
  62.  
  63. // front side
  64. triIndexPtr[]->index0 = ; triIndexPtr[]->index1 = ; triIndexPtr[]->index2 = ;
  65. triIndexPtr[]->index0 = ; triIndexPtr[]->index1 = ; triIndexPtr[]->index2 = ;
  66.  
  67. // back side
  68. triIndexPtr[]->index0 = ; triIndexPtr[]->index1 = ; triIndexPtr[]->index2 = ;
  69. triIndexPtr[]->index0 = ; triIndexPtr[]->index1 = ; triIndexPtr[]->index2 = ;
  70.  
  71. // right side
  72. triIndexPtr[]->index0 = ; triIndexPtr[]->index1 = ; triIndexPtr[]->index2 = ;
  73. triIndexPtr[]->index0 = ; triIndexPtr[]->index1 = ; triIndexPtr[]->index2 = ;
  74.  
  75. // left side
  76. triIndexPtr[]->index0 = ; triIndexPtr[]->index1 = ; triIndexPtr[]->index2 = ;
  77. triIndexPtr[]->index0 = ; triIndexPtr[]->index1 = ; triIndexPtr[]->index2 = ;
  78. }
  79.  
  80. return true;
  81. }

线框索引数据的生成

  1. bool YfBuildBoxWireIndices
  2. (
  3. YeIndexType indexType,
  4. Yuint indexStriding,
  5. Yuint indexPos,
  6. void* pWireIndicesBuffer
  7. )
  8. {
  9. if (!pWireIndicesBuffer)
  10. {
  11. return false;
  12. }
  13.  
  14. char* indexPtr = (char*)pWireIndicesBuffer + indexPos;
  15. if (indexType == YE_INDEX_16_BIT)
  16. {
  17. YsLineIndex16* lineIndexPtr[];
  18. for (Yuint i = ; i < ; i++)
  19. {
  20. lineIndexPtr[i] = (YsLineIndex16*)(indexPtr + i * indexStriding);
  21. }
  22.  
  23. // bottom
  24. lineIndexPtr[]->index0 = ; lineIndexPtr[]->index1 = ;
  25. lineIndexPtr[]->index0 = ; lineIndexPtr[]->index1 = ;
  26. lineIndexPtr[]->index0 = ; lineIndexPtr[]->index1 = ;
  27. lineIndexPtr[]->index0 = ; lineIndexPtr[]->index1 = ;
  28.  
  29. // center
  30. lineIndexPtr[]->index0 = ; lineIndexPtr[]->index1 = ;
  31. lineIndexPtr[]->index0 = ; lineIndexPtr[]->index1 = ;
  32. lineIndexPtr[]->index0 = ; lineIndexPtr[]->index1 = ;
  33. lineIndexPtr[]->index0 = ; lineIndexPtr[]->index1 = ;
  34.  
  35. // top
  36. lineIndexPtr[]->index0 = ; lineIndexPtr[]->index1 = ;
  37. lineIndexPtr[]->index0 = ; lineIndexPtr[]->index1 = ;
  38. lineIndexPtr[]->index0= ; lineIndexPtr[]->index1= ;
  39. lineIndexPtr[]->index0= ; lineIndexPtr[]->index1= ;
  40. }
  41. else
  42. {
  43. YsLineIndex32* lineIndexPtr[];
  44. for (Yuint i = ; i < ; i++)
  45. {
  46. lineIndexPtr[i] = (YsLineIndex32*)(indexPtr + i * indexStriding);
  47. }
  48.  
  49. // bottom
  50. lineIndexPtr[]->index0 = ; lineIndexPtr[]->index1 = ;
  51. lineIndexPtr[]->index0 = ; lineIndexPtr[]->index1 = ;
  52. lineIndexPtr[]->index0 = ; lineIndexPtr[]->index1 = ;
  53. lineIndexPtr[]->index0 = ; lineIndexPtr[]->index1 = ;
  54.  
  55. // center
  56. lineIndexPtr[]->index0 = ; lineIndexPtr[]->index1 = ;
  57. lineIndexPtr[]->index0 = ; lineIndexPtr[]->index1 = ;
  58. lineIndexPtr[]->index0 = ; lineIndexPtr[]->index1 = ;
  59. lineIndexPtr[]->index0 = ; lineIndexPtr[]->index1 = ;
  60.  
  61. // top
  62. lineIndexPtr[]->index0 = ; lineIndexPtr[]->index1 = ;
  63. lineIndexPtr[]->index0 = ; lineIndexPtr[]->index1 = ;
  64. lineIndexPtr[]->index0= ; lineIndexPtr[]->index1= ;
  65. lineIndexPtr[]->index0= ; lineIndexPtr[]->index1= ;
  66. }
  67.  
  68. return true;
  69. }

[2] 立方体(Box)图形的生成算法的更多相关文章

  1. [20] 鼓状物(Drum)图形的生成算法

    顶点数据的生成 bool YfBuildDrumVertices ( Yreal radius, Yreal assistRadius, Yuint slices, Yuint stacks, YeO ...

  2. [17] 楼梯(Stairs)图形的生成算法

    感觉这图形怎么看怎么像搓衣板. 顶点数据的生成 bool YfBuildStairsVertices ( Yreal width, Yreal length, Yreal height, Yuint ...

  3. [19] 半球形(Hemisphere)图形的生成算法

    顶点数据的生成 bool YfBuildHemisphereVertices ( Yreal radius, Yuint slices, Yuint stacks, YeOriginPose orig ...

  4. [18] 螺旋楼梯(Spiral Stairs)图形的生成算法

    顶点数据的生成 bool YfBuildSpiralStairsVertices ( Yreal radius, Yreal assistRadius, Yreal height, Yuint sli ...

  5. [16] 螺旋面(Spire)图形的生成算法

    顶点数据的生成 bool YfBuildSpireVertices ( Yreal radius, Yreal assistRadius, Yreal height, Yuint slices, Yu ...

  6. [15] 星星(Star)图形的生成算法

    顶点数据的生成 bool YfBuildStarVertices ( Yreal radius, Yreal assistRadius, Yreal height, Yuint slices, YeO ...

  7. [14] 齿轮(Gear Wheel)图形的生成算法

    顶点数据的生成 bool YfBuildGearwheelVertices ( Yreal radius, Yreal assistRadius, Yreal height, Yuint slices ...

  8. [13] 弧面(Arc)图形的生成算法

    顶点数据的生成 bool YfBuildArcVertices ( Yreal radius, Yreal degree, Yreal height, Yuint slices, Yuint stac ...

  9. [12] 扇形体(Fan)图形的生成算法

    顶点数据的生成 bool YfBuildFunVertices ( Yreal radius, Yreal degree, Yreal height, Yuint slices, YeOriginPo ...

随机推荐

  1. liniux Crontab 的重启和设置

    重启crontab,service cron restart 05 01 * * * /usr/local/php/bin/php FILE 10,30,50 * * * * /usr/local/p ...

  2. PHP的钩子实现解析

    钩子是编程里一个常见的概念,非常的重要.它使得系统变得非常容易拓展(而不用理解其内部的实现机理,这样可以减少很多工作量).只要有一个钩子样本,能很容易仿照第一个钩子快速的编写第二个钩子,这里对钩子进行 ...

  3. IDEA JSP项目构建及学习心得

    近期学习的东西比较杂乱,导致了很多东西都有些忘却.在这里记录一份心得. 简而言之JSP也就是Java代码在页面上的一种呈现方式,用于Web项目的前台展示. 在这里不做过多的阐述. MVC设计模式,Se ...

  4. python开发_webbrowser_浏览器控制模块

    ''' python的webbrowser模块支持对浏览器进行一些操作 主要有以下三个方法: webbrowser.open(url, new=0, autoraise=True) webbrowse ...

  5. codevs 1073 家族 并查集

    家族 Time Limit: 1 Sec  Memory Limit: 256 MB 题目连接 http://www.codevs.cn/problem/1073/ Description 若某个家族 ...

  6. Python— isinstance用法说明

    在学习自动化测试的脚本中发现了这个函数,所以在网上查了一下资料进行如下整理: 通过帮助查看如下: 作用:来判断一个对象是否是一个已知的类型: 其第一个参数(object)为对象,第二个参数为类型名(i ...

  7. Illegal instruction错误的定位---忽略编译期警告的代价

    在原计算机的linux c++程序可以正确跑起来,但是换了一台机器运行时出现致命错误,程序直接当掉,错误提示如下: Illegal instruction (core dumped) 造成改错的主要原 ...

  8. 指针式压力表自动读数:Auto Read the Value of Manometer

    指针式压力表的自动读数,用摄像头对准压力计,然后实时自动地读取压力计的读数.视频效果如下视频所示,红色数字为识别到的指针读数.

  9. [Go] 复合类型(数组、切片、字典、结构体)变量的 初始化 及 注意事项

    Go变量 初始化 对 复合类型(数组.切片.字典.结构体)变量的初始化是,有一些语法限制: 1.初始化表达式必须包含类型标签: 2.左花括号必须在类型尾部,不能另起一行: 3.多个成员初始值以逗号分隔 ...

  10. 字符串变量作mysql查询条件

    原文:http://blog.csdn.net/qing_gee/article/details/41646503 当你的查询条件是一个字符串变量时,你该怎么办,比如字符串可能是“0001ME,000 ...