Beispiel #1
0
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());
}