openGL学习笔记四 : 关于颜色, 大小, 虚线, 多边形反转, 镂空, 使用位图

这篇OpenGL学习笔记主要介绍了如何设置点的大小和线的粗细,颜色的设定,包括透明通道的使用。此外,还讲解了多边形的正反面控制、剔除表面、虚线的绘制以及多边形镂空的实现方法,通过实例代码进行演示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

转载请保留出处,,,,hushuai1992http://blog.youkuaiyun.com/u013642494/article/category/2675731

额, 这个标题我都不知道该怎么起了, 如果没有标题, 请不要在意这些细节。。。。。大笑


我们看看上次我们画的点、以及线, 我们似乎忘了说如何设置点的大小( 哦, 不对, 我似乎是说了后面来说的。。。。), 现在我们来看看


一    设置点的大小和线的粗细

void glPointSize (GLfloat size);//设置点的大小, 默认为一个像素

void glLineWidth (GLfloat width);//设置线的宽度


注意, 这两个函数都要在glBegin()之前使用, 在glBegin()之后使用无效

而且必须要开启反走样(glEnable(GL_LINE_SMOOTH);)了之后才可以使用小数哦

看看代码:

void display()
{
	glClear( GL_COLOR_BUFFER_BIT);
	glPointSize( 20.0f);
	glBegin( GL_POINTS);
		glVertex2f( 0.0f, 0.0f);
	glEnd();

	glLineWidth( 5.0f);
	glBegin( GL_LINES);
		glVertex2f( -0.5f, -0.5f);
		glVertex2f( 1.0f, -0.5f);
	glEnd();
	glFinish();
}



二    设置颜色

估计小伙伴们都猜到了吧

void glColor3f (GLfloat red, GLfloat green, GLfloat blue);//设置颜色

void glColor4f (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha);//设置颜色, 带透明通道


不过这里的参数不是[0,255], 而是[0,1]。线性映射等浮点值表示的最大值映射到1.0(全强度),和零映射到0.0(零点强度)。

采用fd做后缀的函数,以1.0表示最大的使用。
采用b做后缀的函数,以127表示最大的使用。
采用ub做后缀的函数,以255表示最大的使用。
采用s做后缀的函数,以32767表示最大的使用。
采用us做后缀的函数,以65535表示最大的使用。


void display()
{
	glClear( GL_COLOR_BUFFER_BIT);
	glEnable(GL_BLEND); // 打开混合
	glDisable(GL_DEPTH_TEST); // 关闭深度测试
	glBlendFunc(GL_SRC_ALPHA, GL_ONE); // 基于源象素alpha通道值的半透明混合函数
	glColor3f( 0.0f, 1.0f, 0.0f);
	glPointSize( 20.0f);
	glBegin( GL_POINTS);
		glVertex2f( 0.0f, 0.0f);
	glEnd();

	glColor4f( 1.0f, 0.0f, 0.0f, 0.5f);
	glLineWidth( 5.0f);
	glBegin( GL_LINES);
		glVertex2f( -0.5f, -0.5f);
		glVertex2f( 0.5f, 0.5f);
	glEnd();
	glFinish();
}


小伙伴们都注意一下哈, 如果需要使用透明通道, 必须要打开ALPHA混合器,并指定源与目标的混合方式。看这几句代码

glEnable(GL_BLEND); // 打开混合
glDisable(GL_DEPTH_TEST); // 关闭深度测试
glBlendFunc(GL_SRC_ALPHA, GL_ONE); // 基于源象素alpha通道值的半透明混合函数

void glEnable(GLenum cap);//用来开启各项功能

当然, 相对应的肯定就有关闭各项功能glDisable()

我们看看下面的参数

类型
说明
GL_ALPHA_TEST
4864
根据函数glAlphaFunc的条件要求来决定图形透明的层度是否显示。具体参见glAlphaFunc
GL_AUTO_NORMAL
3456
执行后,图形能把光反射到各个方向
GL_BLEND
3042
启用 颜色混合。例如实现半透明效果
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值