1
我试图让OpenGL画出我正在加载的图形OPENFILENAME
。我现在所拥有的是:我可以显示评论,顶点,多少面孔等,但是我无法画出图形,我不知道该怎么做。我可以画出其他预定的数字,但不是我想要打开的数字。如何在OpenGL中显示/绘制.ply对象?
这就是我的一切初始化:
case WM_CREATE:
hDC = GetDC(hWnd);
hRC=wglCreateContext(hDC);
wglMakeCurrent(hDC,hRC);
g_hwndDlg = CreateDialog(hInst,MAKEINTRESOURCE(IDD_DIALOG1),hWnd,DialogProc);
Figure = new DrawFigure();
initGL();
break;
这是我找出我开的元素有:
/* go through each kind of element that we learned is in the file */
/* and read them */
for (i = 0; i < nelems; i++) {
/* get the description of the first element */
elem_name = elist[i];
plist = ply_get_element_description (ply, elem_name, &num_elems, &nprops);
int el=sprintf(szFile,"element %s %d\n", elem_name, num_elems);
/* print the name of the element, for debugging */
TextOut(hDC,150,0+i*20,szFile,el);
/* if we're on vertex elements, read them in */
if (equal_strings ("vertex", elem_name)) {
/* create a vertex list to hold all the vertices */
vlist = (Vertex **) malloc (sizeof (Vertex *) * num_elems);
/* set up for getting vertex elements */
ply_get_property (ply, elem_name, &vert_props[0]);
ply_get_property (ply, elem_name, &vert_props[1]);
ply_get_property (ply, elem_name, &vert_props[2]);
/* grab all the vertex elements */
for (j = 0; j < num_elems; j++) {
int move=10;
/* grab and element from the file */
vlist[j] = (Vertex *) malloc (sizeof (Vertex));
ply_get_element (ply, (void *) vlist[j]);
int vert=sprintf(szFile,"vertex: %g %g %g", vlist[j]->x, vlist[j]->y, vlist[j]->z);
/* print out vertex x,y,z for debugging */
TextOut(hDC,600,move+j*20,szFile,vert);
Figure->Parameters(vlist[j]->x, vlist[j]->y, vlist[j]->z);
}
}
而这正是该类图是,在那里我suppossed绘制一切:
Figure::Figure(){
}
void Figure::Parameters(float x,float y,float z)
{
this->x1=x;
this->y1=y;
this->z1=z;
}
void Figure::Draw()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glLoadIdentity();
gluLookAt(0.0,0.0,4.0,0.0,0.0,0.0,0.0,1.0,0.0);
glBegin(GL_TRIANGLES);
glNormal3f(x1,y1,z1);
glVertex3f(x1,y1,z1);
glEnd();
}
x1,y1,z1 are declared in Figure.h
我试着尽我所能解释自己;如果你认为它仍然需要更多的解释,请告诉我,我会尝试以不同的方式解释它
是的,我忘了解释我猜想我想画的图...我没有知道哪个数字,因为我使用OPENFILENAME打开1个随机数字并绘制它我使用三角形,因为我认为用三角形我可以绘制任何东西,而且我在课堂上试过参数要求的顶点数目我是在课堂上处理并做出“for”画但不起作用
耶的事情是我不知道,如果它的将是一个三角形它可以是任何数字:硅还试图把它像这样(i = 0;我<数字;我++){glBegin(GL_TRIANGLES); glNormal3f(x1,y1,z1); glNormal3f(x1,y1,z1); glVertex3f(x1,y1,z1); glEnd()}不能让它工作或者 – Makenshi 2010-09-26 03:45:29
只是不断传递相同的xyz到OpenGL。这将成为所有顶点都是相同点的三角形。最好的情况下,你看到屏幕上的一个点,最糟糕的情况是,你什么都看不到。我不熟悉.ply格式,但必须有一个三角形列表,可以是顶点列表或索引顶点列表。这是你应该在你的循环中使用的东西。 – 2010-09-26 05:45:39
是的,我实际上使用了一个顶点列表,并且我尝试过使用线条,线条,line_loop并且它们都没有绘制任何东西。< – Makenshi 2010-09-26 06:31:44