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:
29
rug.cpp
29
rug.cpp
@@ -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;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user