永发信息网

opengl绘制一个球体的程序

答案:1  悬赏:0  手机版
解决时间 2021-04-04 17:44
opengl绘制一个球体的程序
最佳答案
语法也有错误:glVertex3fv(&vdata [&tindices[i][0][0]]);
glVertex3fv(&vdata [tindices[i][1][0]]);
glVertex3fv(&vdata [tindices[i][2][0]]);
改为:
glVertex3fv(vdata [tindices[i][0]]);
     
 glVertex3fv(vdata [tindices[i][1]]);
       
glVertex3fv(vdata [tindices[i][2]]);
我的运行环境是在QT IDE上运行的。4.7.0版。
如果你是在VC上运行应该也要加入opengl32,glut,glut32库(32位WIN上的),
另外,这个程序你是看不到一个球体的,因为你没有使用光照,只能看到一个轮廓。
 
我的Qt上我加入的库是:opengl32,glut,glee5(glee5是glee是自己编译的替换glut32库)
头加入了:windown.h,gl/glee.h(glee.h就是glee的头文件在网上可以下载,比gl.h要高级,因为WIN上的gl.h只支持到opengl32的1.1版)

 
源文件:
#include ///////////////////////////////
#include
////////////////////////////////
#include
#include
#define x .52573
#define z .85965
void mydisplay(void)
{
   
static GLfloat vdata[12][3]={{-x,0.0,z},
 
                               {x,0.0,z},
                                {-x,0.0,-z},
                                {x,0.0,-z},
                                 {0.0,z,x},
                                {0.0,z,-x},
                                {0.0,-z,x},
                                {0.0,-z,-x},
                                {z,x,0.0},
                                 {-z,x,0.0},
                                {z,-x,0.0},
                                 {-z,-x,0.0}};
   static GLuint tindices[20][3]={{1,4,0},
                                  {4,9,0},
                                  {4,5,9},
                                  {8,5,4},
                                  {1,8,4},
                                   {1,10,8},
                                   {10,3,8},
                                  {8,3,5},
                                   {3,2,5},
                                  {3,7,2},
                                   {3,10,7},
                                  {10,6,7},
                                  {6,11,7},
                                   {6,0,11},
                                  {6,1,0},
                                   {10,1,6},
                                  {11,0,9},
                                  {2,11,9},
                                  {5,2,9},
                                  {11,2,7}};
   int i;
 
 glBegin(GL_TRIANGLES);
   for(i=0;i<20;i++)
   {
       
       glVertex3fv(vdata [tindices[i][0]]);//////////////////////////////////////////////
       glVertex3fv(vdata [tindices[i][1]]);/////////////////////////////////////////////
       glVertex3fv(vdata [tindices[i][2]]);////////////////////////////////////////////
   }
    glEnd();
}
int main(int argc, char *argv[])
{
   glutInit(&argc, argv);
   glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE);
   glutInitWindowPosition(100, 100);
   glutInitWindowSize(400, 400);
   glutCreateWindow("第一个OpenGL程序");
   glutDisplayFunc(&mydisplay);
   glutMainLoop();
   return 0;
}
后面加了///////////////////////////////////是我修改了的。
我用的连接库是:
LIBS=-lopengl32 -lfreeglut -lglee5
追问谢谢你!那我要怎样才能让他看起来想一个球呢?或者实现它的旋转效果?追答你现在这个只是一个多面体,实际上你现在画出来的只是一个X,Y两个轴上的,Z=0,只是一个二维物体。看不出来是一个“体”,就算你把Z也加上去,必须得增加光照,你学到光照那章之后就会画出一个真正的球体等物体。如果你想现在就用光照,就看一下那章吧。用到环境光,反射光,光源的位置,慢慢来,别心急。我不知道你用的是哪本书,我推荐你学OpenGL的蓝宝书,比较容易入门,就是《OpenGL超级宝典》——就是OpenGL的蓝宝书,另外还有一本《OpenGL编程指南》——OpenGL红宝书,有点难,最好是两本书结合一超看。各 有优点
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
课内文言文阅读(12分)伤仲永金溪民方仲永,
跪求一篇古风耽美小说,攻是黑龙,受忘记是什
见证宝宝的成长的句子,我见证了孩子的成长寒
关于地税问题
风水中的“抱养沙”是什么意思
手卷宣纸0.35元一米在哪买到
tfboys王俊凯的父亲
单选题话筒内与滑动变阻器有类似作用的是……
吃什么水果能淡化疤痕,怎么样能在初期,结痂
黄氏祖堂落成前大门对联
已知角AOB=60度,又自角AOB的顶点引射线OC,
双流机场乖几路地铁去都美领馆
开通了网银怎么激活,我已经开了,网银怎样才
预应力高强混凝土管桩用的螺旋槽10.7钢棒,张
单选题从语法角度审视上题中的一段话,判断正
推荐资讯
傅雷家书摘抄6000字拜托各位大神
想开儿童乐园,到底该如何挑选设备
德国图纸,在粗糙度符号下面写的是Rz 6+14,
宽带毛上面有个光信号闪红灯无线网也不能用了
如果3.2÷a<3.2,那么a是A.纯小数B.带小数C.
宁波中国光大银行(慈溪支行)怎么走
弱弱的问一句有错了性别不错爱1和2的百度云吗
用matlab求解鸡兔同笼问题:鸡加兔子头共有36
His aunt’s letters memories of those bea
林允儿是中国人还是韩国人?
We were sad to learn that several students
尽怎么读,尽的组词,尽的读音,尽的笔顺,尽
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?