mirror of
https://github.com/wheremyfoodat/Panda3DS.git
synced 2025-04-07 06:35:40 +12:00
[OpenGL] Same for depth func
This commit is contained in:
parent
7307bd270b
commit
52c7783ae1
3 changed files with 18 additions and 5 deletions
|
@ -30,6 +30,8 @@ struct GLStateManager {
|
|||
GLuint boundVBO;
|
||||
GLuint currentProgram;
|
||||
|
||||
GLenum depthFunc;
|
||||
|
||||
void reset();
|
||||
void resetBlend();
|
||||
void resetColourMask();
|
||||
|
@ -102,6 +104,10 @@ struct GLStateManager {
|
|||
}
|
||||
}
|
||||
|
||||
void bindVAO(const OpenGL::VertexArray& vao) { bindVAO(vao.handle()); }
|
||||
void bindVBO(const OpenGL::VertexBuffer& vbo) { bindVBO(vbo.handle()); }
|
||||
void useProgram(const OpenGL::Program& program) { useProgram(program.handle()); }
|
||||
|
||||
void setColourMask(bool r, bool g, bool b, bool a) {
|
||||
if (r != redMask || g != greenMask || b != blueMask || a != alphaMask) {
|
||||
r = redMask;
|
||||
|
@ -120,9 +126,14 @@ struct GLStateManager {
|
|||
}
|
||||
}
|
||||
|
||||
void bindVAO(const OpenGL::VertexArray& vao) { bindVAO(vao.handle()); }
|
||||
void bindVBO(const OpenGL::VertexBuffer& vbo) { bindVBO(vbo.handle()); }
|
||||
void useProgram(const OpenGL::Program& program) { useProgram(program.handle()); }
|
||||
void setDepthFunc(GLenum func) {
|
||||
if (depthFunc != func) {
|
||||
depthFunc = func;
|
||||
glDepthFunc(func);
|
||||
}
|
||||
}
|
||||
|
||||
void setDepthFunc(OpenGL::DepthFunc func) { setDepthFunc(static_cast<GLenum>(func)); }
|
||||
};
|
||||
|
||||
static_assert(std::is_trivially_constructible<GLStateManager>(), "OpenGL State Manager class is not trivially constructible!");
|
||||
|
|
|
@ -897,13 +897,13 @@ void Renderer::drawVertices(PICA::PrimType primType, std::span<const Vertex> ver
|
|||
if (depthEnable) {
|
||||
gl.enableDepth();
|
||||
gl.setDepthMask(depthWriteEnable ? GL_TRUE : GL_FALSE);
|
||||
glDepthFunc(depthModes[depthFunc]);
|
||||
gl.setDepthFunc(depthModes[depthFunc]);
|
||||
bindDepthBuffer();
|
||||
} else {
|
||||
if (depthWriteEnable) {
|
||||
gl.enableDepth();
|
||||
gl.setDepthMask(GL_TRUE);
|
||||
glDepthFunc(GL_ALWAYS);
|
||||
gl.setDepthFunc(GL_ALWAYS);
|
||||
bindDepthBuffer();
|
||||
} else {
|
||||
gl.disableDepth();
|
||||
|
|
|
@ -13,9 +13,11 @@ void GLStateManager::resetColourMask() {
|
|||
void GLStateManager::resetDepth() {
|
||||
depthEnabled = false;
|
||||
depthMask = true;
|
||||
depthFunc = GL_LESS;
|
||||
|
||||
OpenGL::disableDepth();
|
||||
OpenGL::setDepthMask(true);
|
||||
OpenGL::setDepthFunc(OpenGL::DepthFunc::Less);
|
||||
}
|
||||
|
||||
void GLStateManager::resetScissor() {
|
||||
|
|
Loading…
Add table
Reference in a new issue