• 大小: 12.95MB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2023-06-20
  • 语言: 其他
  • 标签: OFF文件  

资源简介

本代码是通过OpenGL实行对OFF文件的读取和对读取的三维模型添加旋转功能

资源截图

代码片段和文件信息

#include
#include

#include
#include
#include
#include
#pragma comment(lib“glew32.lib“)




const double DEFAULT_DELTA = 0.03;   //旋转偏移量
int sign = 1;                      //控制是顺时针旋转还是逆时针旋转,1为顺时针旋转。

//矩阵的存储位置
GLint matrixLocation;
int mainWindow;//

int Xaxis = 0;
int Yaxis = 1;
int Zaxis = 2;
int Axis = Xaxis;      //控制是x轴、y轴、z轴旋转。默认是x轴

vec3 Theta(0.0 0.0 0.0);


//Num_Vertices为顶点的个数
const int NUM_VERTICES = 8;            
const vec4 vertexColors[NUM_VERTICES] = {
vec4(0.0 0.0 0.0 1.0)  // Black 
vec4(1.0 0.0 0.0 1.0)  // Red 
vec4(1.0 1.0 0.0 1.0)  // Yellow 
vec4(0.0 1.0 0.0 1.0)  // Green 
vec4(0.0 0.0 1.0 1.0)  // Blue 
vec4(1.0 0.0 1.0 1.0)  // Magenta 
vec4(1.0 1.0 1.0 1.0)  // White 
vec4(0.0 1.0 1.0 1.0)   // Cyan 
};

int nVertices = 0;//顶点数
int nFaces = 0;//面数
int nEdges;//边数

std::vector points;    //存放每个顶点的信息
std::vector colors;    //存放每个顶点的颜色信息
std::vector vertices;  //存放每个顶点的坐标信息

/*
存放每个顶点的坐标和颜色信息
*/
void storePoints(int a int b int c)
{
points.push_back(vertices[a]);
points.push_back(vertices[b]);
points.push_back(vertices[c]);

colors.push_back(vertexColors[a]);
colors.push_back(vertexColors[b]);
colors.push_back(vertexColors[c]);
}
/*
读取off文件
*/
void read_off(const std::string filename)
{

if (filename.empty()) {//如果文件为空,则直接返回
return;
}
std::ifstream fin;
int i = 0;
fin.open(filename);
std::string str;
fin >> str;             //str的内容为OFF
fin >> nVertices;        //顶点数
fin >> nFaces;           //面数
fin >> nEdges;           //边数

for (i = 0; i < nVertices; i++)         //读取off中的点坐标数据,存放在points中
{
double n1 = 0;
double n2 = 0;
double n3 = 0;
double n4 = 0;
fin >> n1;                          //其坐标值有四个
fin >> n2;
fin >> n3;
fin >> n4;
vec4 new_vec3(n1 n2 n3 n4);

vertices.push_back(new_vec3);
}

for (i = 0; i < nFaces; i++)            //读取每个面的信息
{
int n1 = 0;
int n2 = 0;                         //每行的第一个为顶点数,
int n3 = 0;
int n4 = 0;
fin >> n1;
fin >> n2;
fin >> n3;
fin >> n4;
storePoints(n2 n3 n4);
}
fin.close();
}

void init()
{
read_off(“cube.off“);

// 创建顶点数组对象
GLuint vao[1];
glGenVertexArrays(1 vao);
glBindVertexArray(vao[0]);

// 创建并初始化顶点缓存对象
GLuint buffer;
glGenBuffers(1 &buffer);
glBindBuffer(GL_ARRAY_BUFFER buffer);
glBufferData(GL_ARRAY_BUFFER points.size() * sizeof(vec4) + colors.size() * sizeof(vec4)
NULL GL_STATIC_DRAW);

// 分别读取数据
glBufferSubData(GL_ARRAY_BUFFER 0 points.size() * sizeof(vec4) &points[0]);
glBufferSubData(GL_ARRAY_BUFFER points.size() * sizeof(vec4) colors.size() * sizeof(vec4) &colors[0]);

// 读取着色器并使用
GLuint program = InitShader(“vshader.glsl“ “fshader.glsl“);
glUseProgram(program);

// 从顶点着色器中初始化顶点的位置
GLuint pLocation = glGetAttribLocation(program “vPosit

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2016-10-22 20:20  2014150213-欧阳炼均-实验二\
     目录           0  2016-10-20 22:45  2014150213-欧阳炼均-实验二\.vs\
     目录           0  2016-10-20 22:45  2014150213-欧阳炼均-实验二\.vs\实验二\
     目录           0  2016-10-20 22:45  2014150213-欧阳炼均-实验二\.vs\实验二\v14\
     文件       37888  2016-10-22 20:20  2014150213-欧阳炼均-实验二\.vs\实验二\v14\.suo
     目录           0  2016-10-22 20:20  2014150213-欧阳炼均-实验二\Debug\
     文件      134656  2016-10-22 20:13  2014150213-欧阳炼均-实验二\Debug\实验二.exe
     文件     1137924  2016-10-22 20:13  2014150213-欧阳炼均-实验二\Debug\实验二.ilk
     文件     1585152  2016-10-22 20:13  2014150213-欧阳炼均-实验二\Debug\实验二.pdb
     目录           0  2016-10-22 20:20  2014150213-欧阳炼均-实验二\实验二\
     文件        1309  2016-10-20 22:45  2014150213-欧阳炼均-实验二\实验二.sln
     文件    33468416  2016-10-22 20:20  2014150213-欧阳炼均-实验二\实验二.VC.db
     目录           0  2016-10-20 22:46  2014150213-欧阳炼均-实验二\实验二\Common\
     文件        2292  2016-09-05 17:17  2014150213-欧阳炼均-实验二\实验二\Common\InitShader.cpp
     文件         321  2016-10-20 23:02  2014150213-欧阳炼均-实验二\实验二\cube.off
     目录           0  2016-10-22 20:20  2014150213-欧阳炼均-实验二\实验二\Debug\
     文件       60243  2016-10-20 22:47  2014150213-欧阳炼均-实验二\实验二\Debug\InitShader.obj
     文件      409789  2016-10-22 20:13  2014150213-欧阳炼均-实验二\实验二\Debug\main.obj
     文件      393514  2016-10-22 16:14  2014150213-欧阳炼均-实验二\实验二\Debug\main.obj.enc
     文件      855040  2016-10-22 20:13  2014150213-欧阳炼均-实验二\实验二\Debug\vc140.idb
     文件      561152  2016-10-22 20:13  2014150213-欧阳炼均-实验二\实验二\Debug\vc140.pdb
     文件        1564  2016-10-22 20:13  2014150213-欧阳炼均-实验二\实验二\Debug\实验二.log
     目录           0  2016-10-22 20:20  2014150213-欧阳炼均-实验二\实验二\Debug\实验二.tlog\
     文件        1230  2016-10-22 20:13  2014150213-欧阳炼均-实验二\实验二\Debug\实验二.tlog\CL.command.1.tlog
     文件       54012  2016-10-22 20:13  2014150213-欧阳炼均-实验二\实验二\Debug\实验二.tlog\CL.read.1.tlog
     文件        1016  2016-10-22 20:13  2014150213-欧阳炼均-实验二\实验二\Debug\实验二.tlog\CL.write.1.tlog
     文件        1106  2016-10-22 20:13  2014150213-欧阳炼均-实验二\实验二\Debug\实验二.tlog\link.command.1.tlog
     文件        3690  2016-10-22 20:13  2014150213-欧阳炼均-实验二\实验二\Debug\实验二.tlog\link.read.1.tlog
     文件         394  2016-10-22 20:13  2014150213-欧阳炼均-实验二\实验二\Debug\实验二.tlog\link.write.1.tlog
     文件         193  2016-10-22 20:13  2014150213-欧阳炼均-实验二\实验二\Debug\实验二.tlog\实验二.lastbuildstate
     文件          88  2016-09-16 13:26  2014150213-欧阳炼均-实验二\实验二\fshader.glsl
............此处省略9个文件信息

评论

共有 条评论