我想知道像素/片段的原始模板值.零还是一个?如果可能的话,以获取哪些特定操作会修改模板值
I want to know the original stencil value of a pixel/fragment., zero or one? If possible to get what specific action modify the stencil value?
我对OpenGL中的模板缓冲区感到困惑。我在这里阅读了OpenGL教程,https://learnopengl.com/advanced-opengl/stencil-testing。我只是添加一个行代码
glStencilFunc(GL_EQUAL, 1, 0xFF);
,然后什么都不会渲染。如果我将行代码设置为
glStencilFunc(GL_NOTEQUAL, 1, 0xFF);
我的obj将正确渲染。
我想知道为什么?原始模板值不是一个吗?下面的一些代码:
glEnable(GL_DEPTH_TEST);
glDepthFunc(GL_LESS);
glEnable(GL_STENCIL_TEST);
glStencilFunc(GL_EQUAL, 1, 0xFF);
//glStencilFunc(GL_NOTEQUAL, 1, 0xFF);
//glStencilOp(GL_KEEP, GL_KEEP, GL_REPLACE);
while (!glfwWindowShouldClose(window))
{
glfwPollEvents();
glClearColor(0.1f, 0.1f, 0.1f, 1.0f);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT);
shader.use();
glm::mat4 model = glm::mat4(1.0f);
glm::mat4 view = g_camera.GetViewMatrix();
glm::mat4 projection = glm::perspective(g_camera.Zoom, (float)AppGlobal::getInstance()->windowWidth / (float)AppGlobal::getInstance()->windowHeight, 0.1f, 100.0f);
glUniformMatrix4fv(glGetUniformLocation(shader.m_program, "view"), 1, GL_FALSE, glm::value_ptr(view));
glUniformMatrix4fv(glGetUniformLocation(shader.m_program, "projection"), 1, GL_FALSE, glm::value_ptr(projection));
// Floor
glBindVertexArray(planeVAO);
glBindTexture(GL_TEXTURE_2D, floorTexture);
model = glm::mat4(1.0f);
glUniformMatrix4fv(glGetUniformLocation(shader.m_program, "model"), 1, GL_FALSE, glm::value_ptr(model));
glDrawArrays(GL_TRIANGLES, 0, 6);
// some other objects
glBindVertexArray(0);
glfwSwapBuffers(window);
}
[...]原始模板值不是一个吗?
默认情况下,模板缓冲区的清晰值为0。
调用glClear(GL_STENCIL_BUFFER_BIT)
时清除模板缓冲区。glClearStencil
可以指定模板缓冲区的清晰值。初始值为0。
相关文章:
- C++ 随机数生成器:尝试将结果作为向量获取,但通过制作 void 函数来执行此操作而出现错误
- 从格式化输入操作中获取读取字符数
- C++内存模型中的确切规则阻止在获取操作之前重新排序
- 如何使用软化工具包从 OPC UA 服务器异步读取操作回调中的数据值响应中获取 NodeId 详细信息
- 负载是否可以在获取操作下方滑动/存储是否可以漂浮在C++释放上方?
- 从push_front操作中获取常规 MPL 列表
- 无法在 WinRT 中获取异步操作结果 (Windows::Foundation::IAsyncOperating 接口
- 我想知道像素/片段的原始模板值.零还是一个?如果可能的话,以获取哪些特定操作会修改模板值
- 自定义张量流操作获取可变输入张量的列表
- 如何在自定义操作DLL(MSI / Wix)中获取"INSTALLED"属性?
- 如果不在派生类实现中执行此操作,"basic_streambuf"是否会创建自己的获取/放置区域?
- (C++)在按位 OR 操作时获取错误"Illegal instruction (core dumped)"
- 在延期定制操作中获取自定义Data
- PIN从指令地址获取程序集操作码
- 可视化如何从C++自定义操作获取 MSI 'UILevel'属性
- 如何在Qt中获取文件系统操作的上下文菜单
- 在C++中,执行去引用和获取索引0的操作是相同的
- 如何使用字符串操作来获取输入文本文件的某些部分
- 如何获取和操作CBitmap信息
- 在此字符串操作代码中获取out_of_range错误