来自x、y和z文本文件的OpenGL线框
OpenGL wireframe from x,y, and z text file
我有一个有3个坐标的文件,我可以将其渲染为点、线、三角形或任何基元。我想构建这个文件的线框模型,我应该更改或添加什么来将其视为线框
示例:
void draw()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glClearDepth(1.0f);
glEnable(GL_DEPTH_TEST);
glDepthFunc(GL_LEQUAL);
glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST);
glOrtho(-50.0,50.0,-50.0,50.0,-50.0,50.0);
glColor4f(1.0f,1.0f,1.0f,1.0f);
glPointSize(3);
glLineWidth(3);
glColor3f(1.0f,1.0f,1.0f);
for(int i=0; i<points; i++)
{
glBegin(GL_LINES);
glNormal3f(0.0f, 0.0f, 1.0f);
glVertex3d(vList[i][0],vList[i][1],vList[i][2]);
glEnd();
}
}
这永远不会产生任何输出:
for(int i=0; i<points; i++)
{
glBegin(GL_LINES);
glNormal3f(0.0f, 0.0f, 1.0f);
glVertex3d(vList[i][0],vList[i][1],vList[i][2]);
glEnd();
}
GL_LINES每行需要两个顶点,并且在glBegin
和glEnd
调用之间只提供一个顶点。
glBegin
和glEnd
应装订几何体的特定片段,而不是单个顶点。
然而,简单地将调用移出for循环并不能解决您的问题:
glBegin(GL_LINES);
for(int i=0; i<points; i++)
{
glNormal3f(0.0f, 0.0f, 1.0f);
glVertex3d(vList[i][0],vList[i][1],vList[i][2]);
}
glEnd();
这将几乎产生你想要的东西,但实际上会显示每一行OTHER,因为它将你发送的每一对都视为一行。所以它会在点1和2之间画一条线,然后在点3和4之间画。这是因为GL_LINES的意思是"将我发送的每一对解释为一条全新的线,与之前的顶点无关
你真正想要的是:
glBegin(GL_LINE_STRIP);
for(int i=0; i<points; i++)
{
glNormal3f(0.0f, 0.0f, 1.0f);
glVertex3d(vList[i][0],vList[i][1],vList[i][2]);
}
glEnd();
使用GL_LINE_STRIP
指示OpenGL应该取前两个顶点并绘制一条线,然后对于每个新顶点,从最后一条线的末端绘制另一条线。
洞穴
所有这些都假设您的文件实际上是为生成这样的行而设计的。大多数三维文件格式包括顶点和索引。顶点告诉你三维位置,但索引告诉你哪些点应该连接到哪个点。然而,由于这看起来像是一种家庭作业,我将假设文件是如所述的,一个简单的X-Y-Z坐标列表,应该按顺序连接。
相关文章:
- 在 opengl 中渲染 obj 文件时出现黑窗口
- 如何减慢从 BVH 文件读取的 opengl 动画?
- 为什么我尝试在 OpenGL 中加载的 3ds 文件会出现此未经处理的异常?
- OpenGL - 从外部文件绘制点
- 从文件问题加载纹理 Android NDK 和 OpenGL
- OpenGL不能在核心配置文件中使用glVertexAttrib进行绘制
- C ++ OpenGL 如何制作着色器文件并在主 CPP 中使用它
- 将 OpenGL 兼容性配置文件与英特尔 HD GPU + Mesa 结合使用
- VS2017 中的头文件中有多个错误,opengl 项目C++
- 如何在glfw中为OpenGL设置核心配置文件上下文?
- 将浮点数保存在文本文件中,然后从文本文件加载回去(OpenGL和C++)
- 如何使用 Opengl 库显示文本文件中的 3D 点
- 使用 OpenGL 渲染 .obj 文件
- 无法在生成文件中链接 opengl 库
- 用于将三维模型导入OpenGL/C++项目的推荐文件格式和图形库
- 无法使用 Xcode 和终端在 Mac OS 上使用 OpenGL 库编译 c++ 文件
- 编译C 源的问题将.OFF文件转换为XML Android OpenGL ES可读取的问题
- OpenGL重新定义错误与Windows SDK文件相冲突时
- 如何在没有VAO的情况下使用OpenGL Core配置文件
- 在头文件opengl中声明所有显示列表