From f3f94c7ed38034a6cf751dd713aa55f8580dc9bf Mon Sep 17 00:00:00 2001 From: Jens Hannemann Date: Fri, 11 Nov 2016 12:47:39 -0500 Subject: [PATCH] Fix compile errors on Linux The changes below fix compile errors experienced on Ubuntu 16.04 LTS with GCC 5.4.0. - On Linux, must be included to make struct timeval known. - does not include `std:sqrt`. `` does. - must be included to use fopen(). - string.h must be included to use memset(). - A jump to a label (done_close_file) must not cross local declarations. The corresponding code has been encapsulated in a block. - The use of the STRINGIZE macro leads to an error where the compiler sees the #version 430 sequence as an invalid preprocessor directive. Removing the # from #version fixes this. --- include/vapp.h | 4 ++ include/vec.h | 2 +- lib/LoadShaders.cpp | 1 + lib/vbm.cpp | 1 + lib/vdds.cpp | 63 ++++++++++--------- src/10-fur/10-fur.cpp | 1 + src/11-doublewrite/11-doublewrite.cpp | 1 + src/11-oit/11-oit.cpp | 1 + src/11-overdrawcount/11-overdrawcount.cpp | 1 + .../12-particlesimulator.cpp | 2 +- 10 files changed, 45 insertions(+), 32 deletions(-) diff --git a/include/vapp.h b/include/vapp.h index 7796052..70b17f2 100644 --- a/include/vapp.h +++ b/include/vapp.h @@ -3,6 +3,10 @@ #include "vgl.h" +#ifndef _WIN32 +#include +#endif + class VermilionApplication { protected: diff --git a/include/vec.h b/include/vec.h index e2227b6..b9cd049 100644 --- a/include/vec.h +++ b/include/vec.h @@ -11,7 +11,7 @@ # define _USE_MATH_DEFINES 1 #endif -#include +#include #include const float DegreesToRadians = static_cast(M_PI / 180.0f); diff --git a/lib/LoadShaders.cpp b/lib/LoadShaders.cpp index 58dd41d..db6b6fe 100644 --- a/lib/LoadShaders.cpp +++ b/lib/LoadShaders.cpp @@ -6,6 +6,7 @@ #include #include +#include #include #include "LoadShaders.h" diff --git a/lib/vbm.cpp b/lib/vbm.cpp index 22f3968..aafd613 100644 --- a/lib/vbm.cpp +++ b/lib/vbm.cpp @@ -4,6 +4,7 @@ #include "vgl.h" #include +#include VBObject::VBObject(void) : m_vao(0), diff --git a/lib/vdds.cpp b/lib/vdds.cpp index e417679..4fe86f4 100644 --- a/lib/vdds.cpp +++ b/lib/vdds.cpp @@ -602,44 +602,47 @@ void vglLoadDDS(const char* filename, vglImageData* image) if (image->target == GL_NONE) goto done_close_file; + + { + size_t current_pos = ftell(f); + size_t file_size; + fseek(f, 0, SEEK_END); + file_size = ftell(f); + fseek(f, (long)current_pos, SEEK_SET); - size_t current_pos = ftell(f); - size_t file_size; - fseek(f, 0, SEEK_END); - file_size = ftell(f); - fseek(f, (long)current_pos, SEEK_SET); + image->totalDataSize = file_size - current_pos; + image->mip[0].data = new uint8_t [image->totalDataSize]; - image->totalDataSize = file_size - current_pos; - image->mip[0].data = new uint8_t [image->totalDataSize]; + fread(image->mip[0].data, file_size - current_pos, 1, f); - fread(image->mip[0].data, file_size - current_pos, 1, f); + int level; + GLubyte * ptr = reinterpret_cast(image->mip[0].data); - int level; - GLubyte * ptr = reinterpret_cast(image->mip[0].data); + int width = file_header.std_header.width; + int height = file_header.std_header.height; + int depth = file_header.std_header.depth; - int width = file_header.std_header.width; - int height = file_header.std_header.height; - int depth = file_header.std_header.depth; + image->sliceStride = 0; - image->sliceStride = 0; + if (image->mipLevels == 0) + { + image->mipLevels = 1; + } - if (image->mipLevels == 0) - { - image->mipLevels = 1; - } + for (level = 0; level < image->mipLevels; ++level) + { + image->mip[level].data = ptr; + image->mip[level].width = width; + image->mip[level].height = height; + image->mip[level].depth = depth; + image->mip[level].mipStride = vgl_GetDDSStride(file_header, width) * height; + image->sliceStride += image->mip[level].mipStride; + ptr += image->mip[level].mipStride; + width >>= 1; + height >>= 1; + depth >>= 1; + } - for (level = 0; level < image->mipLevels; ++level) - { - image->mip[level].data = ptr; - image->mip[level].width = width; - image->mip[level].height = height; - image->mip[level].depth = depth; - image->mip[level].mipStride = vgl_GetDDSStride(file_header, width) * height; - image->sliceStride += image->mip[level].mipStride; - ptr += image->mip[level].mipStride; - width >>= 1; - height >>= 1; - depth >>= 1; } done_close_file: diff --git a/src/10-fur/10-fur.cpp b/src/10-fur/10-fur.cpp index d9ce31a..b478f4a 100644 --- a/src/10-fur/10-fur.cpp +++ b/src/10-fur/10-fur.cpp @@ -13,6 +13,7 @@ #include #include +#include BEGIN_APP_DECLARATION(FurApplication) // Override functions from base class diff --git a/src/11-doublewrite/11-doublewrite.cpp b/src/11-doublewrite/11-doublewrite.cpp index 0ad0f60..d637ef7 100644 --- a/src/11-doublewrite/11-doublewrite.cpp +++ b/src/11-doublewrite/11-doublewrite.cpp @@ -14,6 +14,7 @@ #include "LoadShaders.h" #include +#include #include #define MAX_FRAMEBUFFER_WIDTH 2048 diff --git a/src/11-oit/11-oit.cpp b/src/11-oit/11-oit.cpp index 20fd8cc..aa626cb 100644 --- a/src/11-oit/11-oit.cpp +++ b/src/11-oit/11-oit.cpp @@ -14,6 +14,7 @@ #include "LoadShaders.h" #include +#include #include #define MAX_FRAMEBUFFER_WIDTH 2048 diff --git a/src/11-overdrawcount/11-overdrawcount.cpp b/src/11-overdrawcount/11-overdrawcount.cpp index 2666377..dffec53 100644 --- a/src/11-overdrawcount/11-overdrawcount.cpp +++ b/src/11-overdrawcount/11-overdrawcount.cpp @@ -14,6 +14,7 @@ #include "LoadShaders.h" #include +#include #include #define MAX_FRAMEBUFFER_WIDTH 2048 diff --git a/src/12-particlesimulator/12-particlesimulator.cpp b/src/12-particlesimulator/12-particlesimulator.cpp index ea90b5e..ad0b266 100644 --- a/src/12-particlesimulator/12-particlesimulator.cpp +++ b/src/12-particlesimulator/12-particlesimulator.cpp @@ -111,7 +111,7 @@ void ComputeParticleSimulator::Initialize(const char * title) static const char compute_shader_source[] = STRINGIZE( -#version 430 core\n +version 430 core\n layout (std140, binding = 0) uniform attractor_block {