void MultiLayerMieApplied<FloatType>::ConvertToSP() { this->MarkUncalculated(); if (target_width_.size() + coating_width_.size() == 0) return; // Nothing to convert, we suppose that SP was set directly GenerateSizeParameter(); GenerateIndex(); if (this->size_param_.size() != this->refractive_index_.size()) throw std::invalid_argument("Ivalid conversion of width to size parameter units!/n"); }
int main() { start_time = clock(); GlRunner *runner = new GlRunner(RenderCB); glPolygonMode(GL_FRONT_AND_BACK, GL_LINE); VS = runner->BuildShaderProgram("shaders/mesh_ripple.vert", GL_VERTEX_SHADER); FS = runner->BuildShaderProgram("shaders/mesh_ripple.frag", GL_FRAGMENT_SHADER); GLuint PPO = runner->BuildProgramPipeline(); glUseProgramStages(PPO, GL_VERTEX_SHADER_BIT, VS); glUseProgramStages(PPO, GL_FRAGMENT_SHADER_BIT, FS); GLfloat *pMesh = GenerateVertexMesh(); //PrintVertexMesh(pMesh); GLuint VAO, VBO[2]; glGenVertexArrays(1, &VAO); glGenBuffers(2, VBO); glBindVertexArray(VAO); glBindBuffer(GL_ARRAY_BUFFER, VBO[0]); glBufferData(GL_ARRAY_BUFFER, 2*sizeof(GLfloat)*xmesh*ymesh, pMesh, GL_STATIC_DRAW); glEnableVertexAttribArray(0); glVertexAttribPointer(0, 2, GL_FLOAT, GL_FALSE, 2*sizeof(GLfloat), 0); GLuint *pIndex = GenerateIndex(); glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, VBO[1]); glBufferData(GL_ELEMENT_ARRAY_BUFFER, 2*sizeof(GLuint)*xmesh*(ymesh-1), pIndex, GL_STATIC_DRAW); glPointSize(4.0); /* setup matrixs */ glm::mat4 model_mat = glm::scale(glm::vec3(3.0)); glm::mat4 proj_mat = glm::perspective(glm::radians(75.0f), 1.0f, 0.01f, 100.0f); glm::vec3 camera_location(0, 2.5, 5); glm::mat4 view_mat = glm::lookAt( camera_location, glm::vec3(0, 0, 0), glm::vec3(0, 1, 0) ); glm::mat4 mvp_mat = proj_mat * view_mat * model_mat; glProgramUniformMatrix4fv(VS, glGetUniformLocation(VS, "uMVP"), 1, GL_FALSE, &mvp_mat[0][0]); runner->OnRender(); return 0; }
int main(int argc, char* argv[]) { if (argc < 2) { std::cout << "Usage cworker [command] [param1] [param2] ...." << std::endl; std::cout << "For a list of commands use the 'help' command" << std::endl; return 0; } switch (toCommand(std::string(argv[1]))) { case help: std::cout << "Commands:" << std::endl; std::cout << "help \n\t Print this message" << std::endl; std::cout << "database [gamma] \n\t Generates a precomputed edges database with a specific gamma" << std::endl; std::cout << "index [gamma] \n\t Generates a graph indexing file which is used to load the correct samples. Gamma can be adjusted, but must not be bigger than the one the database was generated with"<<std::endl; break; case database: if (argc == 3) { float gamma = atof(argv[2]); std::cout << "Generating database with gamma = " << gamma << std::endl; GenerateDatabase(gamma); } else { std::cout << "You must supply a gamma" << std::endl; } break; case index: if (argc == 3) { float gamma = atof(argv[2]); std::cout << "Generating index with gamma = " << gamma << std::endl; GenerateIndex(gamma); } else { std::cout << "You must supply a gamma" << std::endl; } break; break; default: std::cout << "Not a valid command" << std::endl; break; } }