深圳网站建设 龙华信科,应用界面设计,天津机械网站建设模板,广告软文是什么意思目录
一、顺序
二、模板测试
1、概念
2、工作原理
3、关键函数
三、深度测试
1、概念
2、工作原理
3、关键函数
三、模板测试和深度测试的先后顺序 一、顺序
在Android OpenGL中#xff0c;模板测试#xff08;Stencil Testing#xff09;是在深度测试#xff0…目录
一、顺序
二、模板测试
1、概念
2、工作原理
3、关键函数
三、深度测试
1、概念
2、工作原理
3、关键函数
三、模板测试和深度测试的先后顺序 一、顺序
在Android OpenGL中模板测试Stencil Testing是在深度测试Depth Testing之前执行的。
二、模板测试
1、概念
模板测试是一种用于控制像素绘制的方式。它允许开发者根据模板缓冲区Stencil Buffer中的值来决定是否绘制某个像素。模板测试通常用于实现一些高级的图形效果如阴影、反射、折射、物体轮廓描边等。
2、工作原理
当片段着色器处理完片段之后模板测试就开始执行。它会将设定的模板参考值与片段对应位置的模板值进行比较符合条件的片段通过测试不符合条件的则被丢弃不进行渲染。
3、关键函数 glEnable(GL_STENCIL_TEST)启用模板测试。 glStencilFunc(GLenum func, GLint ref, GLuint mask)设置模板测试函数。该函数决定了模板测试通过的条件。其中func是测试函数ref是参考值mask是掩码用于在比较前对模板值和参考值进行按位与运算。 glStencilOp(GLenum sfail, GLenum dpfail, GLenum dppass)设置模板测试通过或失败时的操作。其中sfail是模板测试失败时的操作dpfail是模板测试通过但深度测试失败时的操作dppass是模板测试和深度测试都通过时的操作。
三、深度测试
1、概念
深度测试是指在片段着色器执行之后利用深度缓冲所保存的深度值决定当前片段是否被丢弃的过程。它用于确定哪个物体在另一个物体的前面从而正确地渲染场景。
2、工作原理
深度缓冲区通常和颜色缓冲区有着相同的宽度和高度存储着每个像素的深度值。当深度测试开启时OpenGL会比较当前片段的深度值与深度缓冲区中的值。如果当前片段的深度值小于深度缓冲区中的值表示它更接近观察者则通过测试并更新深度缓冲区中的值否则丢弃该片段。
3、关键函数 glEnable(GL_DEPTH_TEST)启用深度测试。 glDepthFunc(GLenum func)设置深度测试函数。该函数决定了深度测试通过的条件。常用的选项有GL_LESS小于、GL_LEQUAL小于等于等。 glClear(GL_DEPTH_BUFFER_BIT)清除深度缓冲区。在渲染之前通常需要清除深度缓冲区以避免使用上一次渲染时留下的深度值。
三、模板测试和深度测试的先后顺序
在渲染管线中模板测试发生在深度测试之前。首先OpenGL会执行模板测试根据模板缓冲区和参考值来决定是否丢弃某些片段。然后对于通过模板测试的片段OpenGL会执行深度测试进一步决定哪些片段应该被保留并渲染到屏幕上。
综上所述Android OpenGL中模板测试和深度测试的先后顺序是先进行模板测试然后进行深度测试。这种顺序允许开发者利用模板测试来实现复杂的图形效果如物体轮廓描边等同时仍然能够利用深度测试来正确地渲染场景中的物体。