零基础入门OpenGL系列教程(六、早期OpenGL绘图属性)

 我来答
游戏解说17
2022-06-06 · TA获得超过950个赞
知道小有建树答主
回答量:313
采纳率:0%
帮助的人:63.9万
展开全部

点的属性恐怕就只有点的大小了,通过调用 void glPointSize(GLfloat size) 函数可以设置点的大小,传入的参数是一个浮点数代表点的像素。

这个设置是支持 反走样 (antialiasing)的,如果你设置了反走样这个函数同样适用。

线的属性大致有两种,一是线宽,二是样式。

设置线宽和设置点大小一样,通过 void glLineWidth(GLfloat width) 函数来设置,传入的参数也是浮点数。同样支持反走样。

线的样式设置比较有意思,通过 void glLineStipple(GLint factor,GLushort pattern) 函数来设置。第一个参数是因子,我把它简单的理解为线条样式拉伸的系数,第二个参数比较有趣,它是用来描绘具体样式的16位整数。1对应实线,0对应空白,通过这种方法表现出来样式。

这是我画的虚线,对应的样式是0x0A0A。在设置样式的时候需要调用 glEnable(GL_LINE_STIPPLE) 函数打开线段样式渲染状态。

即使是二维的平面也分为正面和背面,比如说如果我顺时针方向渲染的点为正面,那么逆时针渲染的点就是背面了。有了这一概念我们就可以单独的对图形的某一个面操作,比如说正面填充背面描边。

void glFrontFace(GLenum mode) 可以设置图形的正面与背面(相反的为背面),参数是顺时针或逆时针。 void glPolygonMode(GLenum face,GLenum mode) 可以分别对正面或背面以不同方式渲染。举个例子。

我通过顺时针和逆时针两种方式画的两个三角形,渲染结果是不同的。

此外, void glEdgeFlag( GLboolean flag) 函数可以指定边是否是边界,如果不是可以隐藏它。

通过这个特性我简单的画了一个“二”。

关于面的属性还有很多。比如样式、纹理甚至雾化效果,这个在现代OpenGL里面再说吧。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式