怎么用Visual C++6.0来实现对OpenGL三维图形的绘制

如题所述

既然问这个问题,那么你首先应该已经学会使用opengl二维的图形绘制了吧?三维也只是多出一个z轴坐标而已.你以前设点要设2个坐标,那么三维则要设三个坐标.比如设一个点坐标PointA[] = { 0.5f, -sqrt(6.0f)/12, -sqrt(3.0f)/6},那么只要使用glVertex3fv(PointA)便可在此位置画出一个点,画了三个点后使用TRIANGLES便可成为一个面.下面的程序是画出一个旋转彩色四面体
#include<gl/glut.h>
#include<math.h>
#define ColoredVertex(c,v)do{glColor3fv(c);glVertex3fv(v);}while(0);
GLfloat angle=0.0f;
void myDisplay()
{
static int list=0;
if(list==0)
{
GLfloat
PointA[]={0.5f,-sqrt(6.0f)/12,-sqrt(3.0f)/6},
PointB[]={-0.5f,-sqrt(6.0f)/12,-sqrt(3.0f)/6},
PointC[]={0.0f,-sqrt(6.0f)/12,sqrt(3.0f)/3},
PointD[]={0.0f,sqrt(6.0f)/4,0};
GLfloat
ColorR[]={1,0,0},
ColorG[]={0,1,0},
ColorB[]={0,0,1},
ColorY[]={1,1,0};
list=glGenLists(1);
glNewList(list,GL_COMPILE);
glBegin(GL_TRIANGLES);
ColoredVertex(ColorR,PointA); //ABC
ColoredVertex(ColorG,PointB);
ColoredVertex(ColorB,PointC);
ColoredVertex(ColorR,PointA); //ACD
ColoredVertex(ColorB,PointC);
ColoredVertex(ColorY,PointD);
ColoredVertex(ColorR,PointA); //ABD;
ColoredVertex(ColorG,PointB);
ColoredVertex(ColorY,PointD);
ColoredVertex(ColorG,PointB); //BCD
ColoredVertex(ColorB,PointC);
ColoredVertex(ColorY,PointD);
glEnd();
glEndList();
glEnable(GL_DEPTH_TEST);
}
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
glPushMatrix();
glRotatef(angle,1,0.5,0);
glCallList(list);
glPopMatrix();
glutSwapBuffers();
}
void myIdle()
{
angle=angle+0.5;
if(angle>=360)
angle=0.0f;
myDisplay();
}
int main(int argc, char* argv[])
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE);
glutInitWindowPosition(200, 200);
glutInitWindowSize(500, 500);
glutCreateWindow("旋转四面体");
glutDisplayFunc(&myDisplay);
glutIdleFunc(&myIdle);
glutMainLoop();
return 0;
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2016-11-29
并不是可以直接在VC里直接进行OpenGL编程的,要安装一个GLUT(OpenGL应用工具包,安装方法你可以上网搜到)。如果你要学OpenGL的话,建议先看看《计算机图形学》这本书算是最基础的,介绍怎么做图,相当于告诉你OpenGL的算法,入门教材;另外比较好的教程推荐:周炜的nehe中文教程opengl ,这个是一个个例子,快速入门的,网址:其它还有很多关于OpenGL的书,不过等有一定基础再看吧。

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网