TEST(ShaderLib,editShader) { auto shader = ngl::ShaderLib::instance(); auto *shaderName="Edit"; shader->createShaderProgram(shaderName,ngl::ErrorExit::OFF); constexpr auto Vertex="EditVert"; shader->attachShader( Vertex, ngl::ShaderType::VERTEX ,ngl::ErrorExit::OFF); shader->loadShaderSource(Vertex,"files/EditVert.glsl"); EXPECT_TRUE(shader->editShader(Vertex,"@breakMe","1.0"))<<"edit shader set breakMe "; EXPECT_TRUE(shader->editShader(Vertex,"@numLights","2"))<<"edit shader"; EXPECT_TRUE(shader->compileShader(Vertex))<<"error compiling vert shader"; constexpr auto Fragment="EditFrag"; shader->attachShader( Fragment, ngl::ShaderType::FRAGMENT,ngl::ErrorExit::OFF ); shader->loadShaderSource(Fragment,"files/EditFrag.glsl"); EXPECT_TRUE(shader->editShader(Fragment,"@numLights","2"))<<"edit shader"; EXPECT_TRUE(shader->compileShader(Fragment))<<"error compiling vert shader"; shader->attachShaderToProgram(shaderName,Vertex); shader->attachShaderToProgram(shaderName,Fragment); EXPECT_TRUE(shader->linkProgramObject(shaderName))<<"First Link"; (*shader)[shaderName]->use(); EXPECT_TRUE(shader->getCurrentShaderName()==shaderName); // Now re-edit shader->resetEdits(Vertex); shader->resetEdits(Fragment); EXPECT_TRUE(shader->editShader(Vertex,"@numLights","5"))<<"edit shader 2nd"; EXPECT_TRUE(shader->editShader(Vertex,"@breakMe","1.0"))<<"edit shader set breakMe 2nd"; EXPECT_TRUE(shader->editShader(Fragment,"@numLights","5"))<<"edit shader"; EXPECT_TRUE(shader->compileShader(Vertex))<<"error compiling vert shader"; EXPECT_TRUE(shader->compileShader(Fragment))<<"error compiling vert shader"; EXPECT_TRUE(shader->linkProgramObject(shaderName)); }
//----------------------------------------------------------------------------------------- void CEditShaderTreeWidget::onEditClicked() { emit editShader(getText()); }