OpenGL不显示从STL文件加载的多个顶点

时间:2015-04-16 16:46:08

标签: opengl

我尝试从STL文件中绘制3D模型。我已经成功从CAD文件加载三角形网格,加载的数据是正确的,因为我加载了ASCII文件。它是加载数据的样本

n 0.954709   -0.160052   -0.250827 
v1 4826.07   16113.6   2710.49 
v2 4826.26   16113.5   2711.21 
v3 4824.94   16108.2   2709.71 
n 0.87753   -0.142971   -0.457712 
v1 4825.89   16113.6   2709.76 
v2 4826.07   16113.6   2710.49 
v3 4824.94   16108.2   2709.71 

然后我在painGL函数中使用下面的代码来绘制

   glViewport(0, 0, width(), height());
   glClear(GL_COLOR_BUFFER_BIT);
   glColor3f(1,1,0);
   glBegin(GL_TRIANGLES);
   for(int i=0;i<triangles.size;i++)
       {
       glNormal3f((GLfloat)triangles.normals[i].x,(GLfloat)triangles.normals[i].y,(GLfloat)triangles.normals[i].z);
       glVertex3f((GLfloat)triangles.vertices[0][i].x,(GLfloat)triangles.vertices[0][i].y,(GLfloat)triangles.vertices[0][i].z);
       glVertex3f((GLfloat)triangles.vertices[1][i].x,(GLfloat)triangles.vertices[1][i].y,(GLfloat)triangles.vertices[1][i].z);
       glVertex3f((GLfloat)triangles.vertices[2][i].x,(GLfloat)triangles.vertices[2][i].y,(GLfloat)triangles.vertices[2][i].z);
   }
   glEnd();

其中triangle是struct

下的变量
typedef struct
{
    VECTOR_3 vertices[3];
    VECTOR_3 normals;
    int size=0;
}STL_PARAMETERS;

但小部件并没有吸引任何事情。我尝试另一个绘制三角形

glColor3f(1,1,0);
glScalef(1, 1, 0.0);
glBegin(GL_TRIANGLES);
glVertex3f(0,-0.5,0);
glVertex3f(0.5,-0.5,0);
glVertex3f(0.0,0.5,0);
glEnd();

它画得正确。我认为OpenGL中的坐标或单位比例存在问题,因为加载的顶点值非常大。 有什么解决方案可以解决我的问题吗?

0 个答案:

没有答案