此篇文章主要是用已有的三维数据绘制立体图形。
1. 数据处理
数据格式如下图所示:
采用结构体形式定义数据结构,将数据信息存储到结构体中,便于存储和调用。结构体定义如下图:
struct datas {
float x;
float y;
float z;
};
vector<datas> incsv;
调用数据方式:
incsv.x,incsv.y,incsv.z
2. 三维显示
在opengl中使用默认的笛卡尔坐标系统,x是横坐标轴,y是纵坐标轴,z轴正方向从屏幕向外指向用户;由于z轴坐标存在一定的偏差,在视觉上很难看出z轴的偏移,故我们要开启深度测试。
BOOL bCull = TRUE; //是否开启回溯剔除
BOOL bDepth = FALSE; //是否开启深度检测
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
if (bCull) glEnable(GL_CULL_FACE);
else glDisable(GL_CULL_FACE);
if (bDepth) glEnable(GL_DEPTH_TEST);
else glDisable(GL_DEPTH_TEST);
控制数组输出显示:
for (int i = 0; i < incsv.size(); i++) //加载三维点
{
glColor3f(1.0f, 0.0f, 0.0f);
glPointSize(2);
glBegin(GL_POINTS);
glVertex3f(incsv[i].x, incsv[i].y, incsv[i].z);
glEnd();
}
显示结果如下图: