opengl 多边形线框_opengl基础学习专题 (三) 多边形绘制的几种样式

题外话

聪明人之所以不会成功,是由于他们缺乏坚韧的毅力。

——艾萨克·牛顿(1643年1月4日—1727年3月31日)英国

也许可以理解为 想更深一步的时候,坚持,努力和聪明缺一不可. 挺直腰杆在此向您致敬,愿您仍在天国

仍潇洒的思索着,奔跑着.

正文

在第二课中,我们学习了如何绘制几何图形,但大家如果多写几个程序,就会发现其实还是有些郁闷之处。

例如:点太小,难以看清楚;直线也太细,不舒服;或者想画虚线,但不知道方法只能用许多短直线,甚至用点组合而成。

这些问题将在本课中被解决。

下面就点、直线、多边形分别讨论。

1、关于点

点的大小默认为1个像素,但也可以改变之。改变的命令为glPointSize,其函数原型如下:

void glPointSize (GLfloat size);

size必须大于0.0f,默认值为1.0f,单位为“像素”。

(注意:对于具体的OpenGL实现,点的大小都有个限度的,如果设置的size超过最大值,则设置可能会有问题。)

这里顺带说一下 关于上面函数编译器行为,以Window 代码为例解释如下

//具体的函数原型声明

WINGDIAPI voidAPIENTRY glPointSize (GLfloat size);/**APIENTRY 是设置编译器行为的宏 本质是 __stdcall

*

*__stdcall是函数调用约定的一种,函数调用约定主要约束了两件事:

*1.参数传递顺序

*2.调用堆栈由谁(调用函数或被调用函数)清理

*3.函数名(在编译器这个层次)自动加前导的下划线,后面紧跟一个@符号,其后紧跟着参数的尺寸

*

*C中函数缺省默认是 __cdecl

*每一个调用它的函数都包含清空堆栈的代码,所以产生的可执行文件大小会比调用_stdcall函数的大。

*函数采用从右到左的压栈方式。

*注意:对于可变参数的成员函数,始终使用__cdecl的转换方式。*/

#define WINAPI __stdcall

#define WINAPIV __cdecl

#define APIENTRY WINAPI

实际使用 glPointSize例子如下:

#include

/**

*这里是绘制的主函数*/

static void __display(void)

{

glClear(GL_COLOR_BUFFER_BIT);

glPointSize(5.0f);

glBegin(GL_POINTS);

glVertex2f(0.0f,0.0f);

glVertex2f(0.5f,0.5f);

glEnd();

glFlush();

}

2、关于直线

(1)直线可以指定宽度:

void glLineWidth(GLfloat width);

其用法跟g

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值