mirror of
https://github.com/XProger/OpenLara.git
synced 2025-08-14 17:14:29 +02:00
runtime shader reload in debug mode (Ctrl + 1)
This commit is contained in:
@@ -224,6 +224,12 @@ namespace Game {
|
||||
level->flipMap();
|
||||
Input::down[ikF] = false;
|
||||
}
|
||||
|
||||
if (Input::down[ikCtrl] && Input::down[ik1]) {
|
||||
delete shaderCache;
|
||||
shaderCache = new ShaderCache();
|
||||
Input::down[ik1] = false;
|
||||
}
|
||||
#endif
|
||||
|
||||
if (Input::down[ik5] && !inventory->isActive()) {
|
||||
|
@@ -373,6 +373,38 @@ namespace GAPI {
|
||||
default : ASSERT(false); LOG("! wrong pass id\n"); return;
|
||||
}
|
||||
|
||||
#ifdef _DEBUG
|
||||
Stream *stream = NULL;
|
||||
switch (pass) {
|
||||
case Core::passCompose :
|
||||
case Core::passShadow :
|
||||
case Core::passAmbient : stream = new Stream("../../src/shaders/shader.glsl"); break;
|
||||
case Core::passWater : stream = new Stream("../../src/shaders/water.glsl"); break;
|
||||
case Core::passFilter : stream = new Stream("../../src/shaders/filter.glsl"); break;
|
||||
case Core::passGUI : stream = new Stream("../../src/shaders/gui.glsl"); break;
|
||||
default : ASSERT(false); return;
|
||||
}
|
||||
|
||||
char *sourceData = new char[stream->size + 1];
|
||||
stream->raw(sourceData, stream->size);
|
||||
sourceData[stream->size] = 0;
|
||||
|
||||
source = sourceData;
|
||||
for (int i = 0; i < stream->size; i++) // trim string resource begin tag
|
||||
if (sourceData[i] == '(') {
|
||||
source = sourceData + i + 1;
|
||||
break;
|
||||
}
|
||||
|
||||
for (int i = stream->size - 1; i >= 0; i--) // trim string resource end tag
|
||||
if (sourceData[i] == ')') {
|
||||
sourceData[i] = 0;
|
||||
break;
|
||||
}
|
||||
|
||||
delete stream;
|
||||
#endif
|
||||
|
||||
char defines[1024];
|
||||
defines[0] = 0;
|
||||
|
||||
@@ -422,6 +454,10 @@ namespace GAPI {
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef _DEBUG
|
||||
delete[] sourceData;
|
||||
#endif
|
||||
|
||||
Core::active.shader = this;
|
||||
glUseProgram(ID);
|
||||
|
||||
|
Reference in New Issue
Block a user