always use scissor on reflections

This commit is contained in:
Lee Salzman
2017-11-29 15:35:10 -05:00
parent e58e8f2eb6
commit bda6248d23
+9 -10
View File
@@ -655,17 +655,20 @@ void drawreflection(float hf, int w, int h, float changelod, bool refract)
extern float wsx1, wsx2, wsy1, wsy2;
int sx = 0, sy = 0, sw = size, sh = size;
bool scissor = reflectscissor && (wsx1 > -1 || wsy1 > -1 || wsx1 < 1 || wsy1 < 1);
if(scissor)
if(reflectscissor && (wsx1 > -1 || wsy1 > -1 || wsx1 < 1 || wsy1 < 1))
{
sx = int(floor((wsx1+1)*0.5f*size));
sy = int(floor((wsy1+1)*0.5f*size));
sw = int(ceil((wsx2+1)*0.5f*size)) - sx;
sh = int(ceil((wsy2+1)*0.5f*size)) - sy;
glScissor(sx, sy, sw, sh);
glEnable(GL_SCISSOR_TEST);
}
glScissor(sx, sy, sw, sh);
glEnable(GL_SCISSOR_TEST);
if(!refract) glCullFace(GL_BACK);
glViewport(0, 0, size, size);
glClear(GL_DEPTH_BUFFER_BIT | GL_COLOR_BUFFER_BIT);
resetcubes();
render_world(camera1->o.x, camera1->o.y, refract ? camera1->o.z : hf, changelod,
@@ -673,10 +676,6 @@ void drawreflection(float hf, int w, int h, float changelod, bool refract)
setupstrips();
if(!refract) glCullFace(GL_BACK);
glViewport(0, 0, size, size);
glClear(GL_DEPTH_BUFFER_BIT | GL_COLOR_BUFFER_BIT);
glEnable(GL_TEXTURE_2D);
glPushMatrix();
@@ -749,7 +748,7 @@ void drawreflection(float hf, int w, int h, float changelod, bool refract)
if(!refract) glCullFace(GL_FRONT);
glViewport(0, 0, w, h);
if(scissor) glDisable(GL_SCISSOR_TEST);
glDisable(GL_SCISSOR_TEST);
glBindTexture(GL_TEXTURE_2D, refract ? refracttex : reflecttex);
glCopyTexSubImage2D(GL_TEXTURE_2D, 0, sx, sy, sx, sy, sw, sh);