diff options
author | Kelly Rauchenberger <fefferburbia@gmail.com> | 2018-02-13 23:00:10 -0500 |
---|---|---|
committer | Kelly Rauchenberger <fefferburbia@gmail.com> | 2018-02-13 23:00:10 -0500 |
commit | 224645d1071c14b4829dbb3ae35870868fcff85a (patch) | |
tree | f84f540eee09315eb0a689c523946ffa03f4fea0 | |
parent | 3df19e45e737a1b9395a9a258e3263e444ebedd7 (diff) | |
download | therapy-224645d1071c14b4829dbb3ae35870868fcff85a.tar.gz therapy-224645d1071c14b4829dbb3ae35870868fcff85a.tar.bz2 therapy-224645d1071c14b4829dbb3ae35870868fcff85a.zip |
Fixed inconsistent rendering failure
The issue appears to have been caused by blending with unset alpha channels. Also included the re-ordered player character sprite image. The CMake file has been updated to include linking against some Apple libraries that are usually already included in GLFW3. refs #1
-rw-r--r-- | CMakeLists.txt | 11 | ||||
-rw-r--r-- | res/Starla.png | bin | 336 -> 3011 bytes | |||
-rw-r--r-- | shaders/bloom1.fragment | 11 | ||||
-rw-r--r-- | shaders/bloom2.fragment | 26 | ||||
-rw-r--r-- | shaders/fill.fragment | 4 | ||||
-rw-r--r-- | shaders/final.fragment | 4 | ||||
-rw-r--r-- | shaders/ntsc.fragment | 4 | ||||
-rw-r--r-- | src/game.cpp | 2 | ||||
-rw-r--r-- | src/renderer.cpp | 34 |
9 files changed, 54 insertions, 42 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index 8b6ba2f..22bbc1a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt | |||
@@ -17,13 +17,22 @@ find_package(portaudio REQUIRED) | |||
17 | find_package(libsndfile REQUIRED) | 17 | find_package(libsndfile REQUIRED) |
18 | find_package(libxml2 REQUIRED) | 18 | find_package(libxml2 REQUIRED) |
19 | 19 | ||
20 | IF(APPLE) | ||
21 | FIND_LIBRARY(COCOA_LIBRARY Cocoa) | ||
22 | FIND_LIBRARY(CV_LIBRARY CoreVideo) | ||
23 | FIND_LIBRARY(IO_LIBRARY IOKit) | ||
24 | MARK_AS_ADVANCED (COCOA_LIBRARY CV_LIBRARY IO_LIBRARY) | ||
25 | SET(EXTRA_LIBS ${COCOA_LIBRARY} ${CV_LIBRARY} ${IO_LIBRARY}) | ||
26 | ENDIF (APPLE) | ||
27 | |||
20 | set(ALL_LIBS | 28 | set(ALL_LIBS |
21 | ${OPENGL_LIBRARIES} | 29 | ${OPENGL_gl_LIBRARY} |
22 | ${GLEW_LIBRARIES} | 30 | ${GLEW_LIBRARIES} |
23 | ${GLFW_LIBRARIES} | 31 | ${GLFW_LIBRARIES} |
24 | ${PORTAUDIO_LIBRARIES} | 32 | ${PORTAUDIO_LIBRARIES} |
25 | ${LIBSNDFILE_LIBRARY} | 33 | ${LIBSNDFILE_LIBRARY} |
26 | ${LIBXML2_LIBRARIES} | 34 | ${LIBXML2_LIBRARIES} |
35 | ${EXTRA_LIBS} | ||
27 | ) | 36 | ) |
28 | 37 | ||
29 | include_directories( | 38 | include_directories( |
diff --git a/res/Starla.png b/res/Starla.png index 7c98514..f5b41d7 100644 --- a/res/Starla.png +++ b/res/Starla.png | |||
Binary files differ | |||
diff --git a/shaders/bloom1.fragment b/shaders/bloom1.fragment index 0a89ea1..ed9e10d 100644 --- a/shaders/bloom1.fragment +++ b/shaders/bloom1.fragment | |||
@@ -2,15 +2,16 @@ | |||
2 | 2 | ||
3 | in vec2 UV; | 3 | in vec2 UV; |
4 | 4 | ||
5 | out vec3 color; | 5 | out vec4 color; |
6 | 6 | ||
7 | uniform vec2 offset; | 7 | uniform vec2 offset; |
8 | uniform sampler2D inTex; | 8 | uniform sampler2D inTex; |
9 | 9 | ||
10 | void main() | 10 | void main() |
11 | { | 11 | { |
12 | color = vec3(0.0); | 12 | vec3 mval = vec3(0.0); |
13 | color += (5.0/16.0) * texture(inTex, UV - offset).rgb; | 13 | mval += (5.0/16.0) * texture(inTex, UV - offset).rgb; |
14 | color += (6.0/16.0) * texture(inTex, UV).rgb; | 14 | mval += (6.0/16.0) * texture(inTex, UV).rgb; |
15 | color += (5.0/16.0) * texture(inTex, UV + offset).rgb; | 15 | mval += (5.0/16.0) * texture(inTex, UV + offset).rgb; |
16 | color = vec4(mval, 1.0); | ||
16 | } | 17 | } |
diff --git a/shaders/bloom2.fragment b/shaders/bloom2.fragment index 4c50e86..6723c2c 100644 --- a/shaders/bloom2.fragment +++ b/shaders/bloom2.fragment | |||
@@ -2,7 +2,7 @@ | |||
2 | 2 | ||
3 | in vec2 UV; | 3 | in vec2 UV; |
4 | 4 | ||
5 | out vec3 color; | 5 | out vec4 color; |
6 | 6 | ||
7 | uniform sampler2D clearTex; | 7 | uniform sampler2D clearTex; |
8 | uniform sampler2D blurTex; | 8 | uniform sampler2D blurTex; |
@@ -15,19 +15,21 @@ float nrand(vec2 n) | |||
15 | 15 | ||
16 | void main() | 16 | void main() |
17 | { | 17 | { |
18 | color = vec3(0.0); | 18 | vec3 mval = vec3(0.0); |
19 | color += texture(clearTex, UV).rgb / 2.0; | 19 | mval += texture(clearTex, UV).rgb / 2.0; |
20 | color += texture(blurTex, UV).rgb; | 20 | mval += texture(blurTex, UV).rgb; |
21 | color = max(vec3(0.0), color - 0.5); | 21 | mval = max(vec3(0.0), mval - 0.5); |
22 | color *= color; | 22 | mval *= mval; |
23 | 23 | ||
24 | float flicker = 0.5 + nrand(vec2(iGlobalTime)); | 24 | float flicker = 0.5 + nrand(vec2(iGlobalTime)); |
25 | flicker *= (flicker); | 25 | flicker *= (flicker); |
26 | //flicker = sqrt(flicker); | 26 | //flicker = sqrt(flicker); |
27 | //flicker = pow(flicker, 1.0/8.0); | 27 | //flicker = pow(flicker, 1.0/8.0); |
28 | //color *= flicker; | 28 | //mval *= flicker; |
29 | color *= mix(vec3(0.0), color, flicker); | 29 | mval *= mix(vec3(0.0), mval, flicker); |
30 | 30 | ||
31 | color += texture(clearTex, UV).rgb; | 31 | mval += texture(clearTex, UV).rgb; |
32 | color = clamp(color, vec3(0.0), vec3(1.0)); | 32 | mval = clamp(mval, vec3(0.0), vec3(1.0)); |
33 | |||
34 | color = vec4(mval, 1.0); | ||
33 | } | 35 | } |
diff --git a/shaders/fill.fragment b/shaders/fill.fragment index ab7d9c9..81443c4 100644 --- a/shaders/fill.fragment +++ b/shaders/fill.fragment | |||
@@ -1,10 +1,10 @@ | |||
1 | #version 330 core | 1 | #version 330 core |
2 | 2 | ||
3 | out vec3 color; | 3 | out vec4 color; |
4 | 4 | ||
5 | uniform vec3 vecColor; | 5 | uniform vec3 vecColor; |
6 | 6 | ||
7 | void main() | 7 | void main() |
8 | { | 8 | { |
9 | color = vecColor; | 9 | color = vec4(vecColor, 1.0); |
10 | } | 10 | } |
diff --git a/shaders/final.fragment b/shaders/final.fragment index a3ee243..9a39597 100644 --- a/shaders/final.fragment +++ b/shaders/final.fragment | |||
@@ -5,7 +5,7 @@ in vec3 normIn; | |||
5 | in vec3 camDirIn; | 5 | in vec3 camDirIn; |
6 | in vec3 lightDirIn; | 6 | in vec3 lightDirIn; |
7 | 7 | ||
8 | out vec3 color; | 8 | out vec4 color; |
9 | 9 | ||
10 | uniform sampler2D rendertex; | 10 | uniform sampler2D rendertex; |
11 | uniform sampler2D scanlinestex; | 11 | uniform sampler2D scanlinestex; |
@@ -71,5 +71,5 @@ void main() | |||
71 | vec4 nearfinal = colorfres + colordiff + colorspec + emissive; | 71 | vec4 nearfinal = colorfres + colordiff + colorspec + emissive; |
72 | //vec4 final = nearfinal * mix(vec4(1,1,1,1), vec4(0,0,0, 0), Tuning_Dimming); | 72 | //vec4 final = nearfinal * mix(vec4(1,1,1,1), vec4(0,0,0, 0), Tuning_Dimming); |
73 | 73 | ||
74 | color = nearfinal.rgb; | 74 | color = nearfinal; |
75 | } | 75 | } |
diff --git a/shaders/ntsc.fragment b/shaders/ntsc.fragment index 56fb1c4..d6ae904 100644 --- a/shaders/ntsc.fragment +++ b/shaders/ntsc.fragment | |||
@@ -2,7 +2,7 @@ | |||
2 | 2 | ||
3 | in vec2 UV; | 3 | in vec2 UV; |
4 | 4 | ||
5 | out vec3 color; | 5 | out vec4 color; |
6 | 6 | ||
7 | uniform sampler2D curFrameSampler; | 7 | uniform sampler2D curFrameSampler; |
8 | uniform sampler2D NTSCArtifactSampler; | 8 | uniform sampler2D NTSCArtifactSampler; |
@@ -61,5 +61,5 @@ void main() | |||
61 | Cur_Local = clamp(Cur_Local + (offset * Tuning_Sharp * mix(vec4(1,1,1,1), NTSCArtifact, Tuning_NTSC)), vec4(0,0,0,0), vec4(1,1,1,1)); | 61 | Cur_Local = clamp(Cur_Local + (offset * Tuning_Sharp * mix(vec4(1,1,1,1), NTSCArtifact, Tuning_NTSC)), vec4(0,0,0,0), vec4(1,1,1,1)); |
62 | Cur_Local = clamp(max(Cur_Local, Tuning_Persistence * (1.0 / (1.0 + (2.0 * Tuning_Bleed))) * (Prev_Local + ((Prev_Left + Prev_Right) * Tuning_Bleed))), vec4(0,0,0,0), vec4(1,1,1,1)); | 62 | Cur_Local = clamp(max(Cur_Local, Tuning_Persistence * (1.0 / (1.0 + (2.0 * Tuning_Bleed))) * (Prev_Local + ((Prev_Left + Prev_Right) * Tuning_Bleed))), vec4(0,0,0,0), vec4(1,1,1,1)); |
63 | 63 | ||
64 | color = Cur_Local.xyz; | 64 | color = vec4(Cur_Local.rgb, 1.0); |
65 | } | 65 | } |
diff --git a/src/game.cpp b/src/game.cpp index 39bb3f1..1182689 100644 --- a/src/game.cpp +++ b/src/game.cpp | |||
@@ -40,7 +40,7 @@ Game::Game( | |||
40 | 40 | ||
41 | int player = entityManager_.emplaceEntity(); | 41 | int player = entityManager_.emplaceEntity(); |
42 | 42 | ||
43 | AnimationSet playerGraphics {"res/Starla2.bmp", 10, 12, 6}; | 43 | AnimationSet playerGraphics {"res/Starla.png", 10, 12, 6}; |
44 | playerGraphics.emplaceAnimation("stillLeft", 3, 1, 1); | 44 | playerGraphics.emplaceAnimation("stillLeft", 3, 1, 1); |
45 | playerGraphics.emplaceAnimation("stillRight", 0, 1, 1); | 45 | playerGraphics.emplaceAnimation("stillRight", 0, 1, 1); |
46 | playerGraphics.emplaceAnimation("walkingLeft", 4, 2, 10); | 46 | playerGraphics.emplaceAnimation("walkingLeft", 4, 2, 10); |
diff --git a/src/renderer.cpp b/src/renderer.cpp index 3945e09..f840180 100644 --- a/src/renderer.cpp +++ b/src/renderer.cpp | |||
@@ -33,8 +33,6 @@ static GLuint bloom1Shader; | |||
33 | static GLuint bloom2Shader; | 33 | static GLuint bloom2Shader; |
34 | 34 | ||
35 | // The buffers for the NTSC rendering process | 35 | // The buffers for the NTSC rendering process |
36 | static GLuint renderedTex1; | ||
37 | static GLuint renderedTex2; | ||
38 | static GLuint renderedTexBufs[2]; | 36 | static GLuint renderedTexBufs[2]; |
39 | static int curBuf; | 37 | static int curBuf; |
40 | static GLuint artifactsTex; | 38 | static GLuint artifactsTex; |
@@ -148,6 +146,10 @@ void flipImageData(unsigned char* data, int width, int height, int comps) | |||
148 | 146 | ||
149 | void loadMesh(const char* filename, std::vector<glm::vec3>& out_vertices, std::vector<glm::vec2>& out_uvs, std::vector<glm::vec3>& out_normals) | 147 | void loadMesh(const char* filename, std::vector<glm::vec3>& out_vertices, std::vector<glm::vec2>& out_uvs, std::vector<glm::vec3>& out_normals) |
150 | { | 148 | { |
149 | out_vertices.clear(); | ||
150 | out_uvs.clear(); | ||
151 | out_normals.clear(); | ||
152 | |||
151 | FILE* file = fopen(filename, "r"); | 153 | FILE* file = fopen(filename, "r"); |
152 | if (file == nullptr) | 154 | if (file == nullptr) |
153 | { | 155 | { |
@@ -308,34 +310,33 @@ GLFWwindow* initRenderer() | |||
308 | GLenum DrawBuffers2[1] = {GL_COLOR_ATTACHMENT1}; | 310 | GLenum DrawBuffers2[1] = {GL_COLOR_ATTACHMENT1}; |
309 | glDrawBuffers(1, DrawBuffers2); | 311 | glDrawBuffers(1, DrawBuffers2); |
310 | 312 | ||
313 | glfwGetFramebufferSize(window, &buffer_width, &buffer_height); | ||
314 | |||
311 | glGenRenderbuffers(1, &bloom_depthbuffer); | 315 | glGenRenderbuffers(1, &bloom_depthbuffer); |
312 | glBindRenderbuffer(GL_RENDERBUFFER, bloom_depthbuffer); | 316 | glBindRenderbuffer(GL_RENDERBUFFER, bloom_depthbuffer); |
313 | glRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH_COMPONENT, 1024, 768); | 317 | glRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH_COMPONENT, buffer_width, buffer_height); |
314 | glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, bloom_depthbuffer); | 318 | glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, bloom_depthbuffer); |
315 | 319 | ||
316 | // Set up the NTSC rendering buffers | 320 | // Set up the NTSC rendering buffers |
317 | glGenTextures(1, &renderedTex1); | 321 | glGenTextures(2, renderedTexBufs); |
318 | glBindTexture(GL_TEXTURE_2D, renderedTex1); | 322 | glBindTexture(GL_TEXTURE_2D, renderedTexBufs[0]); |
319 | glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, GAME_WIDTH, GAME_HEIGHT, 0, GL_RGB, GL_UNSIGNED_BYTE, 0); | 323 | glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, GAME_WIDTH, GAME_HEIGHT, 0, GL_RGB, GL_UNSIGNED_BYTE, 0); |
320 | glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); | 324 | glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); |
321 | glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); | 325 | glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); |
322 | glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); | 326 | glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); |
323 | glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); | 327 | glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); |
324 | renderedTexBufs[0] = renderedTex1; | ||
325 | 328 | ||
326 | glGenTextures(1, &renderedTex2); | 329 | glBindTexture(GL_TEXTURE_2D, renderedTexBufs[1]); |
327 | glBindTexture(GL_TEXTURE_2D, renderedTex2); | ||
328 | glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, GAME_WIDTH, GAME_HEIGHT, 0, GL_RGB, GL_UNSIGNED_BYTE, 0); | 330 | glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, GAME_WIDTH, GAME_HEIGHT, 0, GL_RGB, GL_UNSIGNED_BYTE, 0); |
329 | glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); | 331 | glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); |
330 | glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); | 332 | glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); |
331 | glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); | 333 | glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); |
332 | glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); | 334 | glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); |
333 | renderedTexBufs[1] = renderedTex2; | ||
334 | 335 | ||
335 | // Set up bloom rendering buffers | 336 | // Set up bloom rendering buffers |
336 | glGenTextures(1, &preBloomTex); | 337 | glGenTextures(1, &preBloomTex); |
337 | glBindTexture(GL_TEXTURE_2D, preBloomTex); | 338 | glBindTexture(GL_TEXTURE_2D, preBloomTex); |
338 | glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, 1024, 768, 0, GL_RGB, GL_UNSIGNED_BYTE, 0); | 339 | glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, buffer_width, buffer_height, 0, GL_RGB, GL_UNSIGNED_BYTE, 0); |
339 | glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); | 340 | glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); |
340 | glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); | 341 | glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); |
341 | glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); | 342 | glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); |
@@ -343,7 +344,7 @@ GLFWwindow* initRenderer() | |||
343 | 344 | ||
344 | glGenTextures(1, &bloomPassTex1); | 345 | glGenTextures(1, &bloomPassTex1); |
345 | glBindTexture(GL_TEXTURE_2D, bloomPassTex1); | 346 | glBindTexture(GL_TEXTURE_2D, bloomPassTex1); |
346 | glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, 1024/4, 768/4, 0, GL_RGB, GL_UNSIGNED_BYTE, 0); | 347 | glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, buffer_width/4, buffer_height/4, 0, GL_RGB, GL_UNSIGNED_BYTE, 0); |
347 | glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); | 348 | glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); |
348 | glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); | 349 | glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); |
349 | glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); | 350 | glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); |
@@ -351,7 +352,7 @@ GLFWwindow* initRenderer() | |||
351 | 352 | ||
352 | glGenTextures(1, &bloomPassTex2); | 353 | glGenTextures(1, &bloomPassTex2); |
353 | glBindTexture(GL_TEXTURE_2D, bloomPassTex2); | 354 | glBindTexture(GL_TEXTURE_2D, bloomPassTex2); |
354 | glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, 1024/4, 768/4, 0, GL_RGB, GL_UNSIGNED_BYTE, 0); | 355 | glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, buffer_width/4, buffer_height/4, 0, GL_RGB, GL_UNSIGNED_BYTE, 0); |
355 | glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); | 356 | glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); |
356 | glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); | 357 | glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); |
357 | glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); | 358 | glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); |
@@ -370,15 +371,15 @@ GLFWwindow* initRenderer() | |||
370 | 371 | ||
371 | glGenBuffers(1, &mesh_vertexbuffer); | 372 | glGenBuffers(1, &mesh_vertexbuffer); |
372 | glBindBuffer(GL_ARRAY_BUFFER, mesh_vertexbuffer); | 373 | glBindBuffer(GL_ARRAY_BUFFER, mesh_vertexbuffer); |
373 | glBufferData(GL_ARRAY_BUFFER, mesh_vertices.size() * sizeof(glm::vec3), &mesh_vertices[0], GL_STATIC_DRAW); | 374 | glBufferData(GL_ARRAY_BUFFER, mesh_vertices.size() * sizeof(glm::vec3), mesh_vertices.data(), GL_STATIC_DRAW); |
374 | 375 | ||
375 | glGenBuffers(1, &mesh_uvbuffer); | 376 | glGenBuffers(1, &mesh_uvbuffer); |
376 | glBindBuffer(GL_ARRAY_BUFFER, mesh_uvbuffer); | 377 | glBindBuffer(GL_ARRAY_BUFFER, mesh_uvbuffer); |
377 | glBufferData(GL_ARRAY_BUFFER, mesh_uvs.size() * sizeof(glm::vec3), &mesh_uvs[0], GL_STATIC_DRAW); | 378 | glBufferData(GL_ARRAY_BUFFER, mesh_uvs.size() * sizeof(glm::vec2), mesh_uvs.data(), GL_STATIC_DRAW); |
378 | 379 | ||
379 | glGenBuffers(1, &mesh_normalbuffer); | 380 | glGenBuffers(1, &mesh_normalbuffer); |
380 | glBindBuffer(GL_ARRAY_BUFFER, mesh_normalbuffer); | 381 | glBindBuffer(GL_ARRAY_BUFFER, mesh_normalbuffer); |
381 | glBufferData(GL_ARRAY_BUFFER, mesh_normals.size() * sizeof(glm::vec3), &mesh_normals[0], GL_STATIC_DRAW); | 382 | glBufferData(GL_ARRAY_BUFFER, mesh_normals.size() * sizeof(glm::vec3), mesh_normals.data(), GL_STATIC_DRAW); |
382 | 383 | ||
383 | // Load the vertices of a flat surface | 384 | // Load the vertices of a flat surface |
384 | GLfloat g_quad_vertex_buffer_data[] = { | 385 | GLfloat g_quad_vertex_buffer_data[] = { |
@@ -452,8 +453,7 @@ void destroyRenderer() | |||
452 | glDeleteProgram(bloom2Shader); | 453 | glDeleteProgram(bloom2Shader); |
453 | 454 | ||
454 | // Delete the NTSC rendering buffers | 455 | // Delete the NTSC rendering buffers |
455 | glDeleteTextures(1, &renderedTex1); | 456 | glDeleteTextures(2, renderedTexBufs); |
456 | glDeleteTextures(1, &renderedTex2); | ||
457 | glDeleteTextures(1, &artifactsTex); | 457 | glDeleteTextures(1, &artifactsTex); |
458 | glDeleteTextures(1, &scanlinesTex); | 458 | glDeleteTextures(1, &scanlinesTex); |
459 | glDeleteTextures(1, &preBloomTex); | 459 | glDeleteTextures(1, &preBloomTex); |