【OpenGL学习代码笔记之二】 三维空间中点的绘制

继续捣鼓OpenGL,练习了下3D坐标下点的绘制

代码如下:

 1 #include<glut.h>
2 #include<math.h>
3
4 #define GL_PI 3.1415f
5 void SetupRC()
6 {
7 glClearColor(0.0f, 0.0f, 0.0f, 1.0f);
8 glColor3f(0.0f, 1.0f, 0.0f);
9 }
10
11 void myDisplay(void)
12 {
13 GLfloat x,y;
14 GLfloat sizes[2]; // 用于存储glPointSize最小有效值和最大有效值
15 GLfloat curSize; // 用来存储当前点的大小
16 GLfloat step; // 用于存储点大小之间允许的最小增量
17
18 glGetFloatv(GL_POINT_SIZE_RANGE,sizes); // 获取最小、最大有效值
19 glGetFloatv(GL_POINT_SIZE_GRANULARITY,&step); // 获取最小增量
20 curSize = sizes[0];
21
22 y = 0.0f;
23 x = -0.9f;
24 glClear(GL_COLOR_BUFFER_BIT);
25 glColor3f(1.0f,1.0f,1.0f);
26
27 // 以x为横轴自变量,y为变量绘制正弦曲线
28 for(;x<0.9f;x+=0.01f)
29 {
30 y = 0.5f*sin(x*GL_PI*2);
31 glPointSize(curSize); // 必须写在glBegin和glEnd范围外
32
33 glBegin(GL_POINTS); // 调用glBegin之后才开始画点
34 glVertex2f(x,y);
35 glEnd();
36
37 curSize += step; // 超过sizes[2]范围的点会取合法值域内最接近的值
38 }
39
40 glFlush();
41
42 }
43
44
45 void main()
46 {
47 glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE);
48 glutCreateWindow("sin-curve");
49 glutDisplayFunc(myDisplay);
50 SetupRC();
51 glutMainLoop();
52
53 }

最终结果如下:


总结:

绘制点需要用到 glVertex3f(x,y,z)

且点的大小可以改变:

glGetFloatv(GL_POINT_SIZE_RANGE,sizes); // 获取最小、最大有效值
glGetFloatv(GL_POINT_SIZE_GRANULARITY,&step); // 获取最小增量

设置大小时:  glPointSize(curSize);// 必须写在glBegin和glEnd范围外

转载于:https://www.cnblogs.com/shiyanch/archive/2012/03/01/2375836.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值