windows API下的模板缓冲(stencil buffer)
发布时间:2021-02-27 15:38:36 所属栏目:系统 来源:网络整理
导读:? 在windows API搭建的OpenGL窗口中使用模板缓冲,需要在像素格式描述表中设置stencil buffer位宽为8,这样窗口会自动生成stencil buffer,然后可以在opengl环境下使用模板缓冲了。 ? 一个渲染物体轮廓的示例,绿色为小长方体的边框 void Display() { glEnab
|
? 在windows API搭建的OpenGL窗口中使用模板缓冲,需要在像素格式描述表中设置stencil buffer位宽为8,这样窗口会自动生成stencil buffer,然后可以在opengl环境下使用模板缓冲了。
? 一个渲染物体轮廓的示例,绿色为小长方体的边框
void Display() {
glEnable(GL_DEPTH_TEST);
glStencilOp(GL_KEEP,GL_KEEP,GL_REPLACE);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT);
glStencilMask(0x00); // 绘制地板时确保关闭模板缓冲的写入
shader_gym->use();
shader_gym->setMat4("model",glm::mat4(1));
shader_gym->setMat4("view",phc.getViewMatrix());
shader_gym->setMat4("projection",phc.getProjectionMatrix());
gym->Draw(shader_gym->programId);
glStencilFunc(GL_ALWAYS,1,0xFF);
glStencilMask(0xFF);
cube->scale(5);
cube->Draw(*shader_cube1,phc);
glStencilFunc(GL_NOTEQUAL,0xFF);
glStencilMask(0x00);
glDisable(GL_DEPTH_TEST);
cube->scale(5.4);
cube->Draw(*shader_cube2,phc);
glStencilMask(0xFF);
glEnable(GL_DEPTH_TEST);
movement();
}
?
(编辑:ASP站长) 【免责声明】本站内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。 |
相关内容
未处理完善
-
无相关信息
最新更新




