gpt4 book ai didi

c++ - 我想知道像素/片段的原始模板值,零还是一?如果可能得到什么具体的行动修改模板值?

转载 作者:行者123 更新时间:2023-11-27 23:38:40 26 4
gpt4 key购买 nike

我对 OpenGL 中模板缓冲区的许多事情感到困惑。我在这里阅读了 opengl 教程,https://learnopengl.com/Advanced-OpenGL/Stencil-testing .我只是加了一行代码

glStencilFunc(GL_EQUAL, 1, 0xFF);

然后什么都不会被渲染。如果我将线路代码设置为

glStencilFunc(GL_NOTEQUAL, 1, 0xFF);

我的 objs 将被正确呈现。

我想知道为什么?原来的模板值是零而不是一吗?下面的一些代码:

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);
}

最佳答案

[...] Is it that the original stencil value is zero not one?

默认情况下,模板缓冲区的清除值为 0。

glClear(GL_STENCIL_BUFFER_BIT) 被调用时,模板缓冲区被清除。模板缓冲区的清除值可以由 glClearStencil 指定。 .初始值为0。

关于c++ - 我想知道像素/片段的原始模板值,零还是一?如果可能得到什么具体的行动修改模板值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57275979/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com