资源简介
本代码是通过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\li
文件 3690 2016-10-22 20:13 2014150213-欧阳炼均-实验二\实验二\Debug\实验二.tlog\li
文件 394 2016-10-22 20:13 2014150213-欧阳炼均-实验二\实验二\Debug\实验二.tlog\li
文件 193 2016-10-22 20:13 2014150213-欧阳炼均-实验二\实验二\Debug\实验二.tlog\实验二.lastbuildstate
文件 88 2016-09-16 13:26 2014150213-欧阳炼均-实验二\实验二\fshader.glsl
............此处省略9个文件信息
- 上一篇:蓝牙通讯代码
- 下一篇:安卓室内定位初窥.rar
评论
共有 条评论