TINYGL: Always pass the depth test if TGL_DEPTH_TEST is disabled.

This commit is contained in:
Joni Vähämäki 2014-08-10 16:13:50 +03:00
parent 09b062acdd
commit c420196014
3 changed files with 11 additions and 0 deletions

View file

@ -60,6 +60,7 @@ void glopEnableDisable(GLContext *c, GLParam *p) {
break;
case TGL_DEPTH_TEST:
c->depth_test = v;
c->fb->enableDepthTest(v);
break;
case TGL_ALPHA_TEST:
c->_alphaTestEnabled = v;

View file

@ -87,6 +87,7 @@ FrameBuffer::FrameBuffer(int width, int height, const Graphics::PixelBuffer &fra
this->buffer.zbuf = this->zbuf;
_blendingEnabled = false;
_alphaTestEnabled = false;
_depthTestEnabled = false;
_depthFunc = TGL_LESS;
}
@ -182,6 +183,10 @@ void FrameBuffer::enableAlphaTest(bool enable) {
_alphaTestEnabled = enable;
}
void FrameBuffer::enableDepthTest(bool enable) {
_depthTestEnabled = enable;
}
void FrameBuffer::setDepthFunc(int func) {
_depthFunc = func;
}

View file

@ -67,6 +67,9 @@ struct FrameBuffer {
}
FORCEINLINE bool compareDepth(unsigned int &zSrc, unsigned int &zDst) {
if (!_depthTestEnabled)
return true;
switch (_depthFunc) {
case TGL_NEVER:
break;
@ -271,6 +274,7 @@ struct FrameBuffer {
void enableBlending(bool enable);
void setBlendingFactors(int sfactor, int dfactor);
void enableAlphaTest(bool enable);
void enableDepthTest(bool enable);
void setAlphaTestFunc(int func, float ref);
void setDepthFunc(int func);
void enableDepthWrite(bool enable) {
@ -338,6 +342,7 @@ private:
int _sourceBlendingFactor;
int _destinationBlendingFactor;
bool _alphaTestEnabled;
bool _depthTestEnabled;
int _alphaTestFunc;
int _alphaTestRefVal;
int _depthFunc;