cli arg for base program
This commit is contained in:
parent
fe00f536bd
commit
743e7d14ca
|
@ -1,4 +1,6 @@
|
||||||
|
#include <boost/algorithm/string/case_conv.hpp>
|
||||||
#include <boost/log/trivial.hpp>
|
#include <boost/log/trivial.hpp>
|
||||||
|
#include <boost/algorithm/string.hpp>
|
||||||
#include <exception>
|
#include <exception>
|
||||||
#include <glad/glad.c>
|
#include <glad/glad.c>
|
||||||
// glad must be loaded before GLFW
|
// glad must be loaded before GLFW
|
||||||
|
@ -9,6 +11,22 @@
|
||||||
|
|
||||||
using namespace std;
|
using namespace std;
|
||||||
|
|
||||||
|
ShaderProgram::Base ShaderProgram::baseFromName(string name) {
|
||||||
|
string lname = name;
|
||||||
|
boost::algorithm::to_lower(lname); // yes, cpp needs a library to do this.
|
||||||
|
// can't do a switch over strings in cpp.
|
||||||
|
if (lname == "empty") {
|
||||||
|
return Empty;
|
||||||
|
}
|
||||||
|
if (lname == "triangle") {
|
||||||
|
return Triangle;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
BOOST_LOG_TRIVIAL(fatal) << "unknown base program \"" << name << "\"";
|
||||||
|
exit(EXIT_USAGE);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/* class ShaderProgram Implementations */
|
/* class ShaderProgram Implementations */
|
||||||
string ShaderProgram::baseName() {
|
string ShaderProgram::baseName() {
|
||||||
/*
|
/*
|
||||||
|
@ -64,6 +82,8 @@ int ShaderProgram::run() {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* functions that run out graphics stuff */
|
||||||
|
|
||||||
void framebuffer_size_callback(GLFWwindow *window, int width, int height) {
|
void framebuffer_size_callback(GLFWwindow *window, int width, int height) {
|
||||||
glViewport(0, 0, width, height);
|
glViewport(0, 0, width, height);
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,6 +9,7 @@ class ShaderProgram {
|
||||||
public:
|
public:
|
||||||
enum Base { Empty, Triangle };
|
enum Base { Empty, Triangle };
|
||||||
std::string baseName();
|
std::string baseName();
|
||||||
|
static Base baseFromName(std::string name);
|
||||||
ShaderProgram(Base base, char** vertexSource, char** fragSource);
|
ShaderProgram(Base base, char** vertexSource, char** fragSource);
|
||||||
int run();
|
int run();
|
||||||
|
|
||||||
|
|
32
src/main.cpp
32
src/main.cpp
|
@ -15,14 +15,15 @@ int main(int argc, char **argv) {
|
||||||
po::options_description desc("Available options");
|
po::options_description desc("Available options");
|
||||||
desc.add_options()("help,h", "show help")("verbose,v", "more verbose output")(
|
desc.add_options()("help,h", "show help")("verbose,v", "more verbose output")(
|
||||||
"vert", po::value<string>()->required(), "vertex shader file")(
|
"vert", po::value<string>()->required(), "vertex shader file")(
|
||||||
"frag", po::value<string>()->required(), "fragment shader file");
|
"frag", po::value<string>()->required(), "fragment shader file")(
|
||||||
|
"base,b", po::value<string>()->required(), "base program");
|
||||||
|
|
||||||
/* unused for now */
|
/* unused for now */
|
||||||
po::positional_options_description pdesc;
|
po::positional_options_description pdesc;
|
||||||
// NOTE: if you want to add a positional argument,
|
// NOTE: if you want to add a positional argument,
|
||||||
// you need to create and option for it as it seems.
|
// you need to create and option for it as it seems.
|
||||||
pdesc.add("vert", 1);
|
/* pdesc.add("vert", 1); */
|
||||||
pdesc.add("frag", 1);
|
/* pdesc.add("frag", 1); */
|
||||||
|
|
||||||
po::variables_map vm;
|
po::variables_map vm;
|
||||||
try {
|
try {
|
||||||
|
@ -54,11 +55,14 @@ int main(int argc, char **argv) {
|
||||||
}
|
}
|
||||||
|
|
||||||
/* init graphics stuff */
|
/* init graphics stuff */
|
||||||
GLFWwindow* window = initGl();
|
GLFWwindow *window = initGl();
|
||||||
if (result != 0) {
|
if (result != 0) {
|
||||||
return EXIT_GL;
|
return EXIT_GL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* find the requested */
|
||||||
|
ShaderProgram::Base base = ShaderProgram::baseFromName(vm["base"].as<string>());
|
||||||
|
|
||||||
/* setup the shader program */
|
/* setup the shader program */
|
||||||
BOOST_LOG_TRIVIAL(trace) << "Reading shader files";
|
BOOST_LOG_TRIVIAL(trace) << "Reading shader files";
|
||||||
auto fvert = fopen(vm["vert"].as<string>().c_str(), "r");
|
auto fvert = fopen(vm["vert"].as<string>().c_str(), "r");
|
||||||
|
@ -79,9 +83,11 @@ int main(int argc, char **argv) {
|
||||||
char *frag = (char *)malloc(sfrag + 1);
|
char *frag = (char *)malloc(sfrag + 1);
|
||||||
fread(vert, sizeof(char), svert, fvert);
|
fread(vert, sizeof(char), svert, fvert);
|
||||||
fread(frag, sizeof(char), sfrag, ffrag);
|
fread(frag, sizeof(char), sfrag, ffrag);
|
||||||
BOOST_LOG_TRIVIAL(debug) << "vert file:\n```glsl\n" << vert << "```\n"
|
BOOST_LOG_TRIVIAL(debug) << "vert file:\n```glsl\n"
|
||||||
|
<< vert << "```\n"
|
||||||
<< svert << "B";
|
<< svert << "B";
|
||||||
BOOST_LOG_TRIVIAL(debug) << "frag file:\n```glsl\n" << frag << "```\n"
|
BOOST_LOG_TRIVIAL(debug) << "frag file:\n```glsl\n"
|
||||||
|
<< frag << "```\n"
|
||||||
<< sfrag << "B";
|
<< sfrag << "B";
|
||||||
fclose(fvert);
|
fclose(fvert);
|
||||||
fclose(ffrag);
|
fclose(ffrag);
|
||||||
|
@ -89,7 +95,7 @@ int main(int argc, char **argv) {
|
||||||
BOOST_LOG_TRIVIAL(trace) << "Creating ShaderProgram";
|
BOOST_LOG_TRIVIAL(trace) << "Creating ShaderProgram";
|
||||||
|
|
||||||
// TODO: determinde ShaderProgram::Base with a CLI arg
|
// TODO: determinde ShaderProgram::Base with a CLI arg
|
||||||
ShaderProgram shaderProgram(ShaderProgram::Base::Empty, &vert, &frag);
|
ShaderProgram shaderProgram(base, &vert, &frag);
|
||||||
|
|
||||||
/* Run our main program */
|
/* Run our main program */
|
||||||
BOOST_LOG_TRIVIAL(trace) << "Starting mainWindow";
|
BOOST_LOG_TRIVIAL(trace) << "Starting mainWindow";
|
||||||
|
@ -106,12 +112,18 @@ void help(char *prog, po::options_description desc) {
|
||||||
<< endl
|
<< endl
|
||||||
<< endl
|
<< endl
|
||||||
<< "return values:" << endl
|
<< "return values:" << endl
|
||||||
<< "0\tSuccess"
|
<< "0\tSuccess" << endl
|
||||||
<< "1\tGeneric Failure"
|
<< "1\tGeneric Failure" << endl
|
||||||
<< "2\tBad arguments"
|
<< "2\tBad arguments" << endl
|
||||||
<< "3\tI/O Error" << endl
|
<< "3\tI/O Error" << endl
|
||||||
<< "3\tOpenGL Error" << endl
|
<< "3\tOpenGL Error" << endl
|
||||||
<< endl
|
<< endl
|
||||||
|
<< endl
|
||||||
|
<< "base programs:" << endl
|
||||||
|
<< "Empty\t\t-\tEmpty window with colored background" << endl
|
||||||
|
<< "Triangle\t-\tA static Triangle" << endl
|
||||||
|
<< endl
|
||||||
|
<< endl
|
||||||
<< desc << endl;
|
<< desc << endl;
|
||||||
// NOTE: constants for the error codes are defined in main.hpp
|
// NOTE: constants for the error codes are defined in main.hpp
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue