[CORE][CHG] Use thumbnail shader

- Fix no texture in thumbnail after main shader changed
This commit is contained in:
Linloir 2022-12-18 23:47:12 +08:00
parent 7b9d8766d0
commit 5dd1200a6e
No known key found for this signature in database
GPG Key ID: 58EEB209A0F2C366
2 changed files with 19 additions and 12 deletions

View File

@ -19,21 +19,25 @@ ModelThumbnailWidget::ModelThumbnailWidget(Model* model, QWidget* parent) :
}
// Copy the shaders to the folder
if (QFile::exists("./temp/shaders/vertexshader.vs")) {
QFile::remove("./temp/shaders/vertexshader.vs");
}
QFile::copy(":/shaders/vertexshader.vs", "./temp/shaders/vertexshader.vs");
QFile::setPermissions("./temp/shaders/vertexshader.vs", QFileDevice::ReadOwner | QFileDevice::WriteOwner);
if (QFile::exists("./temp/shaders/fragmentshader.fs")) {
QFile::remove("./temp/shaders/fragmentshader.fs");
}
QFile::copy(":/shaders/fragmentshader.fs", "./temp/shaders/fragmentshader.fs");
QFile::setPermissions("./temp/shaders/fragmentshader.fs", QFile::ReadOwner | QFile::WriteOwner);
extractShaderResource("thumbnailvertexshader.glsl");
extractShaderResource("thumbnailfragmentshader.glsl");
}
ModelThumbnailWidget::~ModelThumbnailWidget() {
}
void ModelThumbnailWidget::extractShaderResource(const QString& shaderName) {
QString shaderResourcePath = ":/shaders/" + shaderName;
QString shaderTempPath = "./temp/shaders/" + shaderName;
if (QFile::exists(shaderTempPath))
{
QFile::remove(shaderTempPath);
}
QFile::copy(shaderResourcePath, shaderTempPath);
QFile::setPermissions(shaderTempPath, QFile::ReadOwner | QFile::WriteOwner);
}
void ModelThumbnailWidget::initializeGL() {
initializeOpenGLFunctions();
@ -44,8 +48,8 @@ void ModelThumbnailWidget::initializeGL() {
_shaderProgram.ensureInitialized();
VertexShader vertexShader("./temp/shaders/vertexshader.vs");
FragmentShader fragmentShader("./temp/shaders/fragmentshader.fs");
VertexShader vertexShader("./temp/shaders/thumbnailvertexshader.glsl");
FragmentShader fragmentShader("./temp/shaders/thumbnailfragmentshader.glsl");
_shaderProgram.attachShader(vertexShader);
_shaderProgram.attachShader(fragmentShader);
vertexShader.dispose();

View File

@ -22,6 +22,9 @@ private:
Renderable _object = Renderable::empty();
ShaderProgram _shaderProgram = ShaderProgram::empty();
Camera _camera;
private:
void extractShaderResource(const QString& shaderName);
protected:
virtual void initializeGL() override;