| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 553 人关注过本帖
标题:opengl显示列表
只看楼主 加入收藏
geng522
Rank: 1
等 级:新手上路
帖 子:48
专家分:0
注 册:2006-6-29
结帖率:0
收藏
 问题点数:0 回复次数:5 
opengl显示列表

下面的程序本来用opengl显示列表要绘制6个彩色三角形,为什么只绘制出一个?百思不得其解,望高手指点!

#include<windows.h>
#include<gl/glut.h>
GLuint listName

void myInit(void)
{
listName=glGenLists(1);
glClearColor(0.0,0.0,0.0,0.0);
glNewList(listName,GL_COMPILE);
glBegin(GL_POLYGON);
glColor3f(1.0,0.0,0.0);
glVertex2f(1.0,1.0);
glColor3f(0.0,1.0,0.0);
glVertex2f(2.0,2.0);
glColor3f(0.0,0.0,1.0);
glVertex2f(1.5,2.5);
glTranslatef(0.5,-0.5,0.0);
glEnd();
glEndList();
glShadeModel(GL_SMOOTH);
}
void myDisplay(void)
{
GLuint i;
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
for(i=0;i<6;i++)
glCallList(listName);
glFlush();
}
void myReshape(GLsizei w,GLsizei h)
{
glViewport(0,0,w,h);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
if(w<=h)
glOrtho(-4.0,4.0,-4.0*(GLfloat)h/(GLfloat)w,4.0*(GLfloat)h/(GLfloat)w,-8.0,8.0);
else
glOrtho(-4.0,4.0*(GLfloat)w/(GLfloat)h,-4.0,4.0,-8.0,8.0);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glTranslatef(-4.0,0.0,-3.0);
}
int main(int argc,char **argv)
{
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB|GLUT_DEPTH);
glutInitWindowSize(500,500);
glutInitWindowPosition(100,200);
glutCreateWindow("display list");
myInit();
glutReshapeFunc(myReshape);
glutDisplayFunc(myDisplay);
glutMainLoop();
return(0);
}

搜索更多相关主题的帖子: opengl 列表 
2007-01-09 10:16
geng522
Rank: 1
等 级:新手上路
帖 子:48
专家分:0
注 册:2006-6-29
收藏
得分:0 

急用,请各位指点

2007-01-09 10:17
huxiaochen
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2006-10-17
收藏
得分:0 
glTranslatef(0.5,-0.5,0.0);放错位置了

for(i=0;i<6;i++)
{
glCallList(listName);
glTranslatef(0.5,-0.5,0.0);
}
改成
for(i=0;i<6;i++)
{
glCallList(listName);
glTranslatef(0.5,-0.5,0.0);
}
把前面的glTranslatef(0.5,-0.5,0.0);删掉就可以了

这里问题是对OpenGL显示列表的运用出错了,网上很多代码也是同样的错误

2007-01-09 20:08
huxiaochen
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2006-10-17
收藏
得分:0 

glTranslatef(0.5,-0.5,0.0);放错位置了

for(i=0;i<6;i++)
{
glCallList(listName);
}
改成
for(i=0;i<6;i++)
{
glCallList(listName);
glTranslatef(0.5,-0.5,0.0);
}
把前面的glTranslatef(0.5,-0.5,0.0);删掉就可以了

这里问题是对OpenGL显示列表的运用出错了,网上很多代码也是同样的错误


2007-01-09 20:08
huxiaochen
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2006-10-17
收藏
得分:0 
写的急了点,呵呵

2007-01-09 20:09
geng522
Rank: 1
等 级:新手上路
帖 子:48
专家分:0
注 册:2006-6-29
收藏
得分:0 

果然是高手,谢过了。以后多多指点

2007-01-14 09:49
快速回复:opengl显示列表
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.014647 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved