OpenGL读取点云文件并绘制


基于glut,读取点云文件 并进行绘制 包括用鼠标加键盘进行旋转、缩放、平移操作 使用VS2012编写
资源截图
代码片段和文件信息
// OpenglDrawPoints.cpp : Defines the entry point for the console application.
//

#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
using namespace std;

typedef struct tagPoint3D
{
GLfloat x;
GLfloat y;
GLfloat z;
}Point3D;

const float PI = 3.141592543f;

std::vector vec_pts;

GLfloat eyeZ;

GLfloat centerX centerY centerZ;

GLfloat fWidth fHeight;

GLfloat halfWidth halfHeight;

GLfloat translateX translateY;

GLfloat rotX rotY;

GLfloat downPtX downPtY;

bool leftBtnDown; GLfloat tempEyeZ;

GLuint arb;

GLuint pt3DNum;

PFNGLGENBUFFERSARBPROC glGenBuffersARB = 0;
PFNGLBINDBUFFERARBPROC glBindBufferARB = 0;
PFNGLBUFFERDATAARBPROC glBufferDataARB = 0;
PFNGLDELETEBUFFERSARBPROC glDeleteBuffersARB = 0;

bool readFile()
{
string filePath;
cout << “input the poing cloud file: “ << endl;
cin >> filePath;

if (-1 == filePath.find(‘\‘))
{
char path[256];
GetModuleFileName(NULL path 256);
int length = strlen(path);
char* temp = path + length;
while (temp[0] != ‘\‘)
{
temp--;
}
temp[0] = 0;

filePath.insert(0 “\“);
filePath.insert(0 path);
filePath += “.txt“;
//ifstream in(strcat(path “\PointsXYZ_201506151741.txt“));
}

ifstream in(filePath.c_str());
if (!in)
{
printf(“读取文件失败!“);
return false;
}

//FILE* file = fopen(filePath.c_str() “r“);
//if (file == NULL)
//{
// printf(“读取文件失败!“);
// return false;
//}

char buf[80];
float a b c;
float minX = 0.0f maxX = 0.0f minY = 0.0f maxY = 0.0f minZ = 0.0f maxZ = 0.0f;
int index = 0;
while (!in.eof())
//while (!feof(file))
{
//fscanf(file “%f %f %f“ &a &b &c);
in.getline(buf 80 ‘
‘);
sscanf(buf “%f %f %f“ &a &b &c);
Point3D pt;
pt.x = a;
pt.y = b;
pt.z = c;
if(eyeZ eyeZ=fabs(pt.z);
if (pt.x < minX)
minX = pt.x;
if (pt.x > maxX)
maxX = pt.x;
if (pt.y < minY)
minY = pt.y;
if (pt.y > maxY)
maxY = pt.y;
//if (pt.z < minZ)
// minZ = pt.z;
//if (pt.z > maxZ)
// maxZ = pt.z;
//minX += pt.x;
//minY += pt.y;
minZ += pt.z;
vec_pts.push_back(pt);
index = 0;
}
in.close();
//fclose(file);

centerX = (maxX + minX)/2;
centerY = (maxY + minY)/2;
//centerZ = (maxZ + minZ)/2;
//centerX = minX/vec_pts.size();
//centerY = minY/vec_pts.size();
centerZ = minZ/vec_pts.size();

halfWidth = fabs(maxX) > fabs(minX) ? fabs(maxX) : fabs(minX);
halfHeight = fabs(maxY) > fabs(minY) ? fabs(maxY) : fabs(minY);

pt3DNum = vec_pts.size();
Point3D* pData = new Point3D[pt3DNum];
for (int i=0; i {
pData[i].x = vec_pts[i].x;
pData[i].y = vec_pts[i].y;
pData[i].z = vec_pts[i].z;
}

glGenBuffersARB = (PFNGLGENBUFFERSARBPROC)wglGetProcAddress(“glGenBuffersARB“);
glB

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件     127488  2015-08-05 09:24  glDrawPointCloudDebugglDrawPointCloud.exe

     文件       1131  2015-08-05 09:23  glDrawPointCloudDebugglDrawPointCloud.exp

     文件     775852  2015-08-05 09:24  glDrawPointCloudDebugglDrawPointCloud.ilk

     文件       2466  2015-08-05 09:23  glDrawPointCloudDebugglDrawPointCloud.lib

     文件    1362944  2015-08-05 09:24  glDrawPointCloudDebugglDrawPointCloud.pdb

     文件    1155165  2015-07-08 11:39  glDrawPointCloudDebug
abbit.txt

     文件       3607  2015-08-05 09:28  glDrawPointCloudglDrawPointCloudglDrawPointCloud.vcxproj

     文件      11864  2015-08-05 11:22  glDrawPointCloudglDrawPointCloudmain.cpp

     文件   37683200  2015-08-05 11:23  glDrawPointCloudglDrawPointCloud.sdf

     文件        915  2015-08-03 15:00  glDrawPointCloudglDrawPointCloud.sln

    ..A..H.     37376  2015-08-05 11:23  glDrawPointCloudglDrawPointCloud.v11.suo

     文件      22528  2015-08-05 11:23  glDrawPointCloudReleaseglDrawPointCloud.exe

     文件       1133  2015-08-05 11:23  glDrawPointCloudReleaseglDrawPointCloud.exp

     文件       2466  2015-08-05 11:23  glDrawPointCloudReleaseglDrawPointCloud.lib

     文件     625664  2015-08-05 11:23  glDrawPointCloudReleaseglDrawPointCloud.pdb

     目录          0  2015-08-05 11:24  glDrawPointCloudDebug

     目录          0  2015-08-05 11:23  glDrawPointCloudglDrawPointCloud

     目录          0  2015-08-05 11:24  glDrawPointCloudRelease

     目录          0  2015-08-05 11:23  glDrawPointCloud

----------- ---------  ---------- -----  ----

             41813799                    19


版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。

发表评论

评论列表(条)