怎么才能使用opengl,循环绘制出三维图形?附问题代码

#include <GL/glut.h>
#include <math.h>

GLfloat vertex [8][3]={
-0.5f, -0.5f, -0.5f,

0.5f, -0.5f, -0.5f,

-0.5f,0.5f, -0.5f,

0.5f, 0.5f, -0.5f,

-0.5f, -0.5f,0.5f,
0.5f, -0.5f,0.5f,

-0.5f, 0.5f, 0.5f,

0.5f, 0.5f,0.5f,

};

GLint index []={
0, 2, 3, 1,
0, 4, 6, 2,
0, 1, 5, 4,
4, 5, 7, 6,
1, 3, 7, 5,
2, 6, 7, 3,
};
;

void myDisplay(void) //渲染函数
{
glClear(GL_COLOR_BUFFER_BIT);
//glRectf(150.0f, 150.0f, 300.0f, 300.0f); //画矩形
glColor3f(1.0,1.0,1.0);
glPolygonMode(GL_FRONT,GL_FILL);//设置多边形正面为填充模式
//glPolygonMode(GL_BACK,GL_LINE);//设置多边形反面为划线模式
glFrontFace(GL_CW);//设置顺时针方向为“正面”
glShadeModel(GL_SMOOTH);//设置渲染
///////////////////////////
glBegin(GL_POLYGON);
glColor3f(1.0,0.0,0.0);
for(int i=0; i<6; ++i){// 有6个面,循环6次
for(int j=0; j<4; ++j){// 每个面有4个顶点,循环4次
glVertex3fv(vertex[index[i]]);};}
glEnd();
/////////////////////////
glFlush();
}
int main(int argc, char *argv[])
{ glutInit(&argc, argv) ;
glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE); //渲染模式
glutInitWindowPosition(100, 100); //窗口坐标
glutInitWindowSize(400, 400); //窗口像素大小
glutCreateWindow("第一个 OpenGL程序");//窗口标题
glClearColor(0.0,0.0,0.0,0.0); //背景颜色0,0,0,黑色
gluOrtho2D(0.0,400.0,0.0,400.0);//
glutDisplayFunc(&myDisplay); //指出渲染函数
glutMainLoop(); //
return 0;

}

第1个回答  2014-05-20
你的摄像机函数呢?就算你画出来了,也看不到?追问

那要加什么进去?

追答

你不加进去,你怎么知道你画三维图是不是正确,不加,系统只是默认的一个视角。而且三维图,包括后面要做的场景都要提供坐标或是函数来完成的。像你上面的这样,只是按空间的几个点给出坐标,用平面来完成的。

你可以画一个简单的四面体,六个面用不同的色,试下。

本回答被提问者采纳
相似回答