1
0
mirror of https://github.com/zenorogue/hyperrogue.git synced 2025-10-21 17:07:40 +00:00

fixed the rug becoming black on some computers when resizing window or during the start animation

This commit is contained in:
Zeno Rogue
2019-11-03 15:52:19 +01:00
parent 1eb27b3393
commit af9b049057
4 changed files with 24 additions and 12 deletions

29
rug.cpp
View File

@@ -1287,6 +1287,8 @@ void drawTriangle(triangle& t) {
EX struct renderbuffer *glbuf;
EX void prepareTexture() {
ensure_glbuf();
if(!glbuf) { rug::close(); return; }
resetbuffer rb;
dynamicval<eStereo> d(vid.stereo_mode, sOFF);
@@ -1446,18 +1448,29 @@ EX void drawRugScene() {
//--------------
EX transmatrix currentrot;
EX void close_glbuf() {
delete glbuf;
glbuf = nullptr;
}
EX void ensure_glbuf() {
if(glbuf) return;
glbuf = new renderbuffer(TEXTURESIZE, TEXTURESIZE, vid.usingGL && !rendernogl);
if(!glbuf->valid) {
addMessage(XLAT("Failed to enable"));
close_glbuf();
return;
}
}
EX void reopen() {
if(rugged) return;
rugdim = 2 * GDIM - 1;
when_enabled = 0;
GLERR("before init");
glbuf = new renderbuffer(TEXTURESIZE, TEXTURESIZE, vid.usingGL && !rendernogl);
if(!glbuf->valid) {
addMessage(XLAT("Failed to enable"));
delete glbuf;
return;
}
ensure_glbuf();
if(!glbuf) { rugged = false; return; }
rugged = true;
if(renderonce) prepareTexture();
if(!rugged) return;
@@ -1527,7 +1540,7 @@ EX void clear_model() {
EX void close() {
if(!rugged) return;
rugged = false;
delete glbuf;
close_glbuf();
finger_center = NULL;
}