[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 // Copy the shaders to the folder
if (QFile::exists("./temp/shaders/vertexshader.vs")) { extractShaderResource("thumbnailvertexshader.glsl");
QFile::remove("./temp/shaders/vertexshader.vs"); extractShaderResource("thumbnailfragmentshader.glsl");
}
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);
} }
ModelThumbnailWidget::~ModelThumbnailWidget() { 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() { void ModelThumbnailWidget::initializeGL() {
initializeOpenGLFunctions(); initializeOpenGLFunctions();
@ -44,8 +48,8 @@ void ModelThumbnailWidget::initializeGL() {
_shaderProgram.ensureInitialized(); _shaderProgram.ensureInitialized();
VertexShader vertexShader("./temp/shaders/vertexshader.vs"); VertexShader vertexShader("./temp/shaders/thumbnailvertexshader.glsl");
FragmentShader fragmentShader("./temp/shaders/fragmentshader.fs"); FragmentShader fragmentShader("./temp/shaders/thumbnailfragmentshader.glsl");
_shaderProgram.attachShader(vertexShader); _shaderProgram.attachShader(vertexShader);
_shaderProgram.attachShader(fragmentShader); _shaderProgram.attachShader(fragmentShader);
vertexShader.dispose(); vertexShader.dispose();

View File

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