Removed unused bits of heightmap example.

This commit is contained in:
Camilla Berglund 2015-01-06 19:01:21 +01:00
parent dcc78017b0
commit 40d1a491ca
2 changed files with 13 additions and 105 deletions

View File

@ -44,7 +44,7 @@ else()
# Set boring names for executables # Set boring names for executables
add_executable(boing WIN32 boing.c) add_executable(boing WIN32 boing.c)
add_executable(gears WIN32 gears.c) add_executable(gears WIN32 gears.c)
add_executable(heightmap WIN32 heightmap.c ${GETOPT} ${GLAD}) add_executable(heightmap WIN32 heightmap.c ${GLAD})
add_executable(particles WIN32 particles.c ${TINYCTHREAD} ${GETOPT}) add_executable(particles WIN32 particles.c ${TINYCTHREAD} ${GETOPT})
add_executable(simple WIN32 simple.c) add_executable(simple WIN32 simple.c)
add_executable(splitview WIN32 splitview.c) add_executable(splitview WIN32 splitview.c)

View File

@ -28,7 +28,6 @@
#include <math.h> #include <math.h>
#include <assert.h> #include <assert.h>
#include <stddef.h> #include <stddef.h>
#include "getopt.h"
#include <glad/glad.h> #include <glad/glad.h>
#include <GLFW/glfw3.h> #include <GLFW/glfw3.h>
@ -52,7 +51,7 @@
* Default shader programs * Default shader programs
*********************************************************************/ *********************************************************************/
static const char* default_vertex_shader = static const char* vertex_shader_text =
"#version 150\n" "#version 150\n"
"uniform mat4 project;\n" "uniform mat4 project;\n"
"uniform mat4 modelview;\n" "uniform mat4 modelview;\n"
@ -65,7 +64,7 @@ static const char* default_vertex_shader =
" gl_Position = project * modelview * vec4(x, y, z, 1.0);\n" " gl_Position = project * modelview * vec4(x, y, z, 1.0);\n"
"}\n"; "}\n";
static const char* default_fragment_shader = static const char* fragment_shader_text =
"#version 150\n" "#version 150\n"
"out vec4 gl_FragColor;\n" "out vec4 gl_FragColor;\n"
"void main()\n" "void main()\n"
@ -118,35 +117,9 @@ static GLuint mesh_vbo[4];
* OpenGL helper functions * OpenGL helper functions
*********************************************************************/ *********************************************************************/
/* Load a (text) file into memory and return its contents
*/
static char* read_file_content(const char* filename)
{
FILE* fd;
size_t size = 0;
char* result = NULL;
fd = fopen(filename, "r");
if (fd != NULL)
{
size = fseek(fd, 0, SEEK_END);
(void) fseek(fd, 0, SEEK_SET);
result = malloc(size + 1);
result[size] = '\0';
if (fread(result, size, 1, fd) != 1)
{
free(result);
result = NULL;
}
(void) fclose(fd);
}
return result;
}
/* Creates a shader object of the specified type using the specified text /* Creates a shader object of the specified type using the specified text
*/ */
static GLuint make_shader(GLenum type, const char* shader_src) static GLuint make_shader(GLenum type, const char* text)
{ {
GLuint shader; GLuint shader;
GLint shader_ok; GLint shader_ok;
@ -156,7 +129,7 @@ static GLuint make_shader(GLenum type, const char* shader_src)
shader = glCreateShader(type); shader = glCreateShader(type);
if (shader != 0) if (shader != 0)
{ {
glShaderSource(shader, 1, (const GLchar**)&shader_src, NULL); glShaderSource(shader, 1, (const GLchar**)&text, NULL);
glCompileShader(shader); glCompileShader(shader);
glGetShaderiv(shader, GL_COMPILE_STATUS, &shader_ok); glGetShaderiv(shader, GL_COMPILE_STATUS, &shader_ok);
if (shader_ok != GL_TRUE) if (shader_ok != GL_TRUE)
@ -173,7 +146,7 @@ static GLuint make_shader(GLenum type, const char* shader_src)
/* Creates a program object using the specified vertex and fragment text /* Creates a program object using the specified vertex and fragment text
*/ */
static GLuint make_shader_program(const char* vertex_shader_src, const char* fragment_shader_src) static GLuint make_shader_program(const char* vs_text, const char* fs_text)
{ {
GLuint program = 0u; GLuint program = 0u;
GLint program_ok; GLint program_ok;
@ -182,10 +155,10 @@ static GLuint make_shader_program(const char* vertex_shader_src, const char* fra
GLsizei log_length; GLsizei log_length;
char info_log[8192]; char info_log[8192];
vertex_shader = make_shader(GL_VERTEX_SHADER, (vertex_shader_src == NULL) ? default_vertex_shader : vertex_shader_src); vertex_shader = make_shader(GL_VERTEX_SHADER, vs_text);
if (vertex_shader != 0u) if (vertex_shader != 0u)
{ {
fragment_shader = make_shader(GL_FRAGMENT_SHADER, (fragment_shader_src == NULL) ? default_fragment_shader : fragment_shader_src); fragment_shader = make_shader(GL_FRAGMENT_SHADER, fs_text);
if (fragment_shader != 0u) if (fragment_shader != 0u)
{ {
/* make the program that connect the two shader and link it */ /* make the program that connect the two shader and link it */
@ -418,17 +391,15 @@ static void key_callback(GLFWwindow* window, int key, int scancode, int action,
} }
} }
/* Print usage information */ static void error_callback(int error, const char* description)
static void usage(void)
{ {
printf("Usage: heightmap [-v <vertex_shader_path>] [-f <fragment_shader_path>]\n"); fprintf(stderr, "Error: %s\n", description);
printf(" heightmap [-h]\n");
} }
int main(int argc, char** argv) int main(int argc, char** argv)
{ {
GLFWwindow* window; GLFWwindow* window;
int ch, iter; int iter;
double dt; double dt;
double last_update_time; double last_update_time;
int frame; int frame;
@ -436,64 +407,12 @@ int main(int argc, char** argv)
GLint uloc_modelview; GLint uloc_modelview;
GLint uloc_project; GLint uloc_project;
char* vertex_shader_path = NULL;
char* fragment_shader_path = NULL;
char* vertex_shader_src = NULL;
char* fragment_shader_src = NULL;
GLuint shader_program; GLuint shader_program;
while ((ch = getopt(argc, argv, "f:v:h")) != -1) glfwSetErrorCallback(error_callback);
{
switch (ch)
{
case 'f':
fragment_shader_path = optarg;
break;
case 'v':
vertex_shader_path = optarg;
break;
case 'h':
usage();
exit(EXIT_SUCCESS);
default:
usage();
exit(EXIT_FAILURE);
}
}
if (fragment_shader_path)
{
vertex_shader_src = read_file_content(fragment_shader_path);
if (!fragment_shader_src)
{
fprintf(stderr,
"ERROR: unable to load fragment shader from '%s'\n",
fragment_shader_path);
exit(EXIT_FAILURE);
}
}
if (vertex_shader_path)
{
vertex_shader_src = read_file_content(vertex_shader_path);
if (!vertex_shader_src)
{
fprintf(stderr,
"ERROR: unable to load vertex shader from '%s'\n",
fragment_shader_path);
exit(EXIT_FAILURE);
}
}
if (!glfwInit()) if (!glfwInit())
{
fprintf(stderr, "ERROR: Unable to initialize GLFW\n");
usage();
free(vertex_shader_src);
free(fragment_shader_src);
exit(EXIT_FAILURE); exit(EXIT_FAILURE);
}
glfwWindowHint(GLFW_RESIZABLE, GL_FALSE); glfwWindowHint(GLFW_RESIZABLE, GL_FALSE);
glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3); glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
@ -504,12 +423,6 @@ int main(int argc, char** argv)
window = glfwCreateWindow(800, 600, "GLFW OpenGL3 Heightmap demo", NULL, NULL); window = glfwCreateWindow(800, 600, "GLFW OpenGL3 Heightmap demo", NULL, NULL);
if (! window ) if (! window )
{ {
fprintf(stderr, "ERROR: Unable to create the OpenGL context and associated window\n");
usage();
free(vertex_shader_src);
free(fragment_shader_src);
glfwTerminate(); glfwTerminate();
exit(EXIT_FAILURE); exit(EXIT_FAILURE);
} }
@ -521,15 +434,10 @@ int main(int argc, char** argv)
gladLoadGLLoader((GLADloadproc) glfwGetProcAddress); gladLoadGLLoader((GLADloadproc) glfwGetProcAddress);
/* Prepare opengl resources for rendering */ /* Prepare opengl resources for rendering */
shader_program = make_shader_program(vertex_shader_src , fragment_shader_src); shader_program = make_shader_program(vertex_shader_text, fragment_shader_text);
free(vertex_shader_src);
free(fragment_shader_src);
if (shader_program == 0u) if (shader_program == 0u)
{ {
fprintf(stderr, "ERROR: during creation of the shader program\n");
usage();
glfwTerminate(); glfwTerminate();
exit(EXIT_FAILURE); exit(EXIT_FAILURE);
} }