C++ 中OpenGL 画线的实现

在超级宝典中有这样的代码:#include<windows.h>#include<gl/glut.h>#include<math.h>constfloatGL_PI=3.... 在超级宝典中有这样的代码:

#include<windows.h>
#include<gl/glut.h>
#include<math.h>

const float GL_PI=3.1415f;

void RenderScene(void)
{
GLfloat x=0,y=0,z=0,angle,xRot=0,yRot=0;

glClear(GL_COLOR_BUFFER_BIT);

glPushMatrix();

glRotatef(xRot,1.0f,0.0f,0.0f);
glRotatef(yRot,0.0f,1.0f,0.0f);

glBegin(GL_POINTS);

z = -50.0f;

for(angle = 0.0f; angle <= (2.0f*GL_PI)*3.0f; angle+=0.1f)
{
x = 50.0f*sin(angle);
y = 50.0f*cos(angle);

glVertex3f(x,y,z);
z += 0.5f;
}

glEnd();

glPopMatrix();

glFlush();

}

void main()
{

glutInitDisplayMode(GLUT_DOUBLE|GLUT_RGB);
glutCreateWindow("Bounce");

glutDisplayFunc(RenderScene);

glutMainLoop();

}

可是运行的时候怎么总是不对
展开
 我来答
aawweeffaa
2009-03-23 · TA获得超过800个赞
知道小有建树答主
回答量:1072
采纳率:39%
帮助的人:151万
展开全部
问题应该就在lz贴出的这段代码中
lz设的是双缓存glutInitDisplayMode(GLUT_DOUBLE|GLUT_RGB)
用的却是glFlush,当然会出不来
在双缓存模式下应该用glutSwapBuffers
在单缓存模式下用glFlush
相互配套应该就能出来了
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
受瑜桂美
2020-04-30 · TA获得超过3746个赞
知道大有可为答主
回答量:3118
采纳率:27%
帮助的人:409万
展开全部
开始时,默认下是采用实线模式的,所以前面开始是实线,后面你启用了点划模式,所以后面是点划线,opengl保留了这个状态,经过glutmainloop后,重画,采用的点划线的方式,所以前面的直线也是点划线了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
eryarfly
2009-03-22 · TA获得超过103个赞
知道小有建树答主
回答量:253
采纳率:100%
帮助的人:181万
展开全部
这是画一个空间螺旋线的程序,
螺旋线的方程可以参考高等数学后面的空间曲线一章.

你的glBegin()中是GL_POINTS,不对,
应为GL_LINES
试试呢?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
gooseberry_88
2009-03-22 · TA获得超过206个赞
知道答主
回答量:40
采纳率:0%
帮助的人:0
展开全部
从lz的图片观察来看,,,
问题貌似出在窗口客户区[Window Client Area]初始化的问题,,
貌似问题不是出在lz现在贴出来的这段代码里面,,,
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友240d0ae
2009-03-23 · 超过11用户采纳过TA的回答
知道答主
回答量:45
采纳率:0%
帮助的人:0
展开全部
glutInitDisplayMode(GLUT_DOUBLE|GLUT_RGB)
改成:
glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式