练手:
#include <gl/glut.h> class CVertex { public: CVertex() {} CVertex(float fv1, float fv2, float fv3, float fu, float fv, float fn1, float fn2, float fn3) { v[0] = fv1; v[1] = fv2; v[2] = fv3; t[0] = fu; t[1] = fv; n[0] = fn1; n[1] = fn2; n[2] = fn3; } float v[3]; float t[2]; float n[3]; }; class CModel { public: CModel() : pVertex(0) , pTriIndices(0) , triNum(0) {} ~CModel() { if (pVertex) { delete [] pVertex; pVertex = 0; } if (pTriIndices) { delete [] pTriIndices; pTriIndices = 0; } } //----------------------------------------------------------------------------- // Name: renderSphere() // Desc: Create a sphere centered at cy, cx, cz with radius r, and // precision p. Based on a function Written by Paul Bourke. // http://astronomy.swin.edu.au/~pbourke/opengl/sphere/ //----------------------------------------------------------------------------- void SetupSphere( float cx, float cy, float cz, float r, int p ) { verNum = (p/2 + 1) * (p+1); triNum = p * p * 3; // (p/2) * p * 2 pVertex = new CVertex[ verNum ]; pTriIndices = new int[ triNum ]; const float PI = 3.14159265358979f; const float TWOPI = 6.28318530717958f; const float PIDIV2 = 1.57079632679489f; float theta1 = 0.0; float theta2 = 0.0; float theta3 = 0.0; float ex = 0.0f; float ey = 0.0f; float ez = 0.0f; float px = 0.0f; float py = 0.0f; float pz = 0.0f; // Disallow a negative number for radius. if( r < 0 ) r = -r; // Disallow a negative number for precision. if( p < 0 ) p = -p; if( p < 4 || r <= 0 ) return; for( int i = 0; i <= p/2; ++i ) { theta1 = i * TWOPI / p - PIDIV2; for( int j = 0; j <= p; ++j ) { theta3 = j * TWOPI / p; ex = cosf(theta1) * cosf(theta3); ey = sinf(theta1); ez = cosf(theta1) * sinf(theta3); px = cx + r * ex; py = cy + r * ey; pz = cz + r * ez; pVertex[ i*(p+1) + j ] = CVertex( px, py, pz, -(j/(float)p), 2*(i)/(float)p, ex, ey, ez ); } } for (int outer=0; outer<p/2; outer++) { for (int inner=0; inner<p; inner++) { //triangle 1 pTriIndices[ ((outer*p+inner)*2)*3 + 0 ] = outer*(p+1)+inner; pTriIndices[ ((outer*p+inner)*2)*3 + 1 ] = (outer+1)*(p+1)+inner; pTriIndices[ ((outer*p+inner)*2)*3 + 2 ] = outer*(p+1)+inner+1; //triangle 2 pTriIndices[ ((outer*p+inner)*2+1)*3 + 0 ] = outer*(p+1)+inner+1; pTriIndices[ ((outer*p+inner)*2+1)*3 + 1 ] = (outer+1)*(p+1)+inner; pTriIndices[ ((outer*p+inner)*2+1)*3 + 2 ] = (outer+1)*(p+1)+inner+1; } } return; } void RenderModel() { //Set vertex arrays for torus glVertexPointer(3, GL_FLOAT, sizeof(CVertex), &pVertex[0].v); glEnableClientState(GL_VERTEX_ARRAY); glNormalPointer(GL_FLOAT, sizeof(CVertex), &pVertex[0].n); glEnableClientState(GL_NORMAL_ARRAY); glTexCoordPointer(2, GL_FLOAT, sizeof(CVertex), &pVertex[0].t); glEnableClientState(GL_TEXTURE_COORD_ARRAY); //Draw glDrawElements(GL_TRIANGLES, triNum, GL_UNSIGNED_INT, pTriIndices); //disable vertex arrays glDisableClientState(GL_VERTEX_ARRAY); glDisableClientState(GL_NORMAL_ARRAY); glDisableClientState(GL_TEXTURE_COORD_ARRAY); } protected: int* pTriIndices; CVertex* pVertex; int triNum; int verNum; };
使用:
CModel g_Sphere; g_Sphere.SetupSphere( 0.0f, 0.0f, 0.0f, 1.5f, g_nPrecision ); g_Sphere.RenderModel();
一个好的 API 设计应该是“版本化”的:变更和新的功能应该在 API 新版本中实现,而不是在一个版本上持续更改。与Web应用程序不同,您可以完全控制客户端和服务器端 代码,APIs 是为了给超出控制的客户端使用。因此, 应该尽可能的保持向后兼容性,如果有一些变化不能向后兼容,你应该在新版本的 API 中采用它同时增加版本号。现有客户端可以继续使用旧版本的 API;新的或升级的客户端可以在新的 A
在 Linxu 系统中,Emacs 的最新版本通常为 emacs-snapshot、emacs-cvs Emacs for Windows 请到这里下载,推荐“patched”版本
在 Windows 平台下,请使用 gvim7ole 版本
2021-06-04 Yearning v2.3.3 优化审核引擎 优化我的工单及审核搜索条件 优化工单详情页信息 优化回滚弹出框UI 修复重新登录密码错误或选择失败后返回登陆页面登录403的问题 流程页面新增搜索功能 修复公告栏admin无法编辑的问题 优化错误拦截逻辑,不重复显示相同错误信息 升级前端库 2021-03-01 Yearning v2.3.2 提升稳定性 优化整体性能,使用更流畅
版本问题,ant design vue1.7.8版本能用less4版本吗? 目前项目为less3版本,按需求升级到less4,报错的内容是ant design vue相关的
问题内容: 如果在我的计算机上编译一个C ++程序,然后在另一个程序(使用旧版软件)上运行它,则会得到:GLIBCXX_3.4.9’ not found`。 实际上,在我的系统上,glibc是较新的版本(我有gcc-libs 4.5.1:libstdc 。so.6.0.14),并 从打印 到 。相反,在另一个系统上,它只能打印到 (我得到libstdc 。so.6.0.8)。 所以我有几个问题:
版本用于组织和计划发布。如果创建了版本并在版本上分配了问题,那么我们可以使用该版本来过滤各种报告中的信息。 可以将问题分配给特定版本,并可以组织该版本中的sprint。 创建版本 第1步:进入到您的项目。 第2步:单击面板左侧显示的版本(Releases)。 第3步:点击Releases链接后,屏幕出现,如下所示: 第4步:单击“创建版本”按钮。 第5步:单击“创建版本”按钮,将出现弹出窗口,询问