OpenGL超级宝典笔记四 - 基础纹理2

一、使用MipMap贴图(主要是应用在纹理缩小过滤中)
优点:
防止当纹理缩小太大的时候,出现闪烁的问题
提高性能,需要缩小的时候就不加载大内存的纹理
缺点:
需要额外的内存作为代价
组成:由一系列缩小的纹理图像组成,子层是父层的1/4
过滤类型:NEAREST快速,LINEAR效果好
GL_NEAREST_MINMAP_NEAREST 选择最邻近Mip层并执行邻近过滤
GL_NEAREST_MINMAP_LINEAR 选择最Mip层线性插补并执行邻近过滤
GL_LINEAR_MINMAP_NEAREST ...
GL_LINEAR_MINMAP_LINEAR ...
生成Mip层:可以提高运行过程的性能
glGenerateMipmap(GL_TEXTURE_2D)






二、各向异性过滤
采用各向异性纹理过滤可以极高提高纹理过滤操作的质量,因为在纹理过滤的时候考虑了观察的角度,这样就不会出现很大的模糊现象


检查是否支持:gltIsExtSupported("GL_EXT_texture_filter_anisotropic")
获取最大的各向异性过滤应用数量:glGetFloatv(GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT,&FLargest)
应用各向异性过滤:glTextparameterf(GL_TEXTURE_2D,GL_TEXTURE_MAX_ANISOTROPY_EXT,fLargest)
各向异性过滤所应用的数量越大,沿最大变化方向(沿最强的观察点)所采样的纹理单元就越多。1.0表示常规的纹理过滤(各向同性过滤)


使用各向异性过滤和使用各向同性过滤的差别:




三、纹理压缩
优点:纹理在图形硬件内存中仍然保持压缩状态,加载速度变快
使用:glTexImage(),其中要把internalFormat指定为GL_COMPRESSED_RGB这种带COMPRESSED类型的
 glCompressedTexImage2D(),internalFormat参数类型必须是COMPRESSED的


四、球体倒影的例子


modelViewMatrix.PushMatrix();
	M3DMatrix44f mCamera;
	cameraFrame.GetCameraMatrix(mCamera);
	modelViewMatrix.MultMatrix(mCamera);;


	modelViewMatrix.PushMatrix();
	//翻转Y轴,绘制倒影
	modelViewMatrix.Scale(1.0f,-1.0f,1.0f);
	modelViewMatrix.Translate(0.0f,0.8f,0.0f);
	//反正之后,原先的正面变成了顺时针了,所以要改变顶点环绕模式:顺时针为正面
	glFrontFace(GL_CW);
	DrawSongAndDance(yRot);
	//绘制完倒影之后改回来顶点环绕模式
	glFrontFace(GL_CCW);
	modelViewMatrix.PopMatrix();


	//开启颜色混合,使倒影和底板的透明度混合
	glEnable(GL_BLEND);
	glBindTexture(GL_TEXTURE_2D,uiTexture[0]);
	glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA);
	static GLfloat vFloorColor[] = {1.0f,1.0f,1.0f,0.75f};
	shaderManager.UseStockShader(GLT_SHADER_TEXTURE_MODULATE,transformPipline.GetModelViewProjectionMatrix(),
		vFloorColor,0);
	floorBatch.Draw();
	glDisable(GL_BLEND);


	DrawSongAndDance(yRot);
	modelViewMatrix.PopMatrix();




-------------------------------------
void glFrontFace(GLenum mode);
作用是控制多边形的正面是如何决定的。在默认情况下,mode是GL_CCW。
mode的值为:
GL_CCW 表示窗口坐标上投影多边形的顶点顺序为逆时针方向的表面为正面。
GL_CW 表示顶点顺序为顺时针方向的表面为正面。
顶点的方向又称为环绕。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值