mirror of
https://github.com/zenorogue/hyperrogue.git
synced 2025-05-21 00:24:08 +00:00
fixed the rug becoming black on some computers when resizing window or during the start animation
This commit is contained in:
parent
1eb27b3393
commit
af9b049057
@ -600,10 +600,7 @@ EX void resetGL() {
|
|||||||
matched_programs.clear();
|
matched_programs.clear();
|
||||||
glhr::current_glprogram = nullptr;
|
glhr::current_glprogram = nullptr;
|
||||||
ray::reset_raycaster();
|
ray::reset_raycaster();
|
||||||
if(rug::rugged) {
|
if(rug::glbuf) rug::close_glbuf();
|
||||||
rug::close();
|
|
||||||
rug::reopen();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -3595,3 +3595,4 @@ Other:
|
|||||||
- hell unlock message on 10th shard
|
- hell unlock message on 10th shard
|
||||||
- levellines feature: shade rendered output by Z coordinate (nice in Hypersian Rug mode)
|
- levellines feature: shade rendered output by Z coordinate (nice in Hypersian Rug mode)
|
||||||
- fixed the overlay in the texture mode (also disabled in ray -- not implemented)
|
- fixed the overlay in the texture mode (also disabled in ray -- not implemented)
|
||||||
|
- fixed the rug becoming black on some computers when resizing window or during the start animation
|
||||||
|
29
rug.cpp
29
rug.cpp
@ -1287,6 +1287,8 @@ void drawTriangle(triangle& t) {
|
|||||||
EX struct renderbuffer *glbuf;
|
EX struct renderbuffer *glbuf;
|
||||||
|
|
||||||
EX void prepareTexture() {
|
EX void prepareTexture() {
|
||||||
|
ensure_glbuf();
|
||||||
|
if(!glbuf) { rug::close(); return; }
|
||||||
resetbuffer rb;
|
resetbuffer rb;
|
||||||
|
|
||||||
dynamicval<eStereo> d(vid.stereo_mode, sOFF);
|
dynamicval<eStereo> d(vid.stereo_mode, sOFF);
|
||||||
@ -1446,18 +1448,29 @@ EX void drawRugScene() {
|
|||||||
//--------------
|
//--------------
|
||||||
|
|
||||||
EX transmatrix currentrot;
|
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() {
|
EX void reopen() {
|
||||||
if(rugged) return;
|
if(rugged) return;
|
||||||
rugdim = 2 * GDIM - 1;
|
rugdim = 2 * GDIM - 1;
|
||||||
when_enabled = 0;
|
when_enabled = 0;
|
||||||
GLERR("before init");
|
GLERR("before init");
|
||||||
glbuf = new renderbuffer(TEXTURESIZE, TEXTURESIZE, vid.usingGL && !rendernogl);
|
ensure_glbuf();
|
||||||
if(!glbuf->valid) {
|
if(!glbuf) { rugged = false; return; }
|
||||||
addMessage(XLAT("Failed to enable"));
|
|
||||||
delete glbuf;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
rugged = true;
|
rugged = true;
|
||||||
if(renderonce) prepareTexture();
|
if(renderonce) prepareTexture();
|
||||||
if(!rugged) return;
|
if(!rugged) return;
|
||||||
@ -1527,7 +1540,7 @@ EX void clear_model() {
|
|||||||
EX void close() {
|
EX void close() {
|
||||||
if(!rugged) return;
|
if(!rugged) return;
|
||||||
rugged = false;
|
rugged = false;
|
||||||
delete glbuf;
|
close_glbuf();
|
||||||
finger_center = NULL;
|
finger_center = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1172,6 +1172,7 @@ void rug() {
|
|||||||
rug::apply_rotation(cspin(1, 2, ticks / 3000.));
|
rug::apply_rotation(cspin(1, 2, ticks / 3000.));
|
||||||
gamescreen(2);
|
gamescreen(2);
|
||||||
rug::apply_rotation(cspin(1, 2, -ticks / 3000.));
|
rug::apply_rotation(cspin(1, 2, -ticks / 3000.));
|
||||||
|
if(!rug::rugged) current = null_animation;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user