Skip to content

Commit c47913a

Browse files
committed
Optimization #1: use TRIANGLE_STRIP instead of TRIANGLES
1 parent 18069de commit c47913a

File tree

5 files changed

+17
-29
lines changed

5 files changed

+17
-29
lines changed

src/graphics/ParticleEmitter.cpp

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,10 @@ ParticleEmitter::ParticleEmitter(ShaderProgram *shaderProgram,
88
GLuint amount)
99
: shaderProgram_(shaderProgram), texture_(texture), amount_(amount), lastUsedParticle_(0) {
1010
GLfloat quad[] = {
11-
0.0f, 1.0f, 0.0f, 1.0f,
12-
1.0f, 0.0f, 1.0f, 0.0f,
1311
0.0f, 0.0f, 0.0f, 0.0f,
14-
1512
0.0f, 1.0f, 0.0f, 1.0f,
16-
1.0f, 1.0f, 1.0f, 1.0f,
17-
1.0f, 0.0f, 1.0f, 0.0f
13+
1.0f, 0.0f, 1.0f, 0.0f,
14+
1.0f, 1.0f, 1.0f, 1.0f
1815
};
1916

2017
glGenVertexArrays(1, &VAO_);
@@ -73,7 +70,7 @@ void ParticleEmitter::render(float scale) {
7370
shaderProgram_->setUniform("particleColor", particle.color);
7471
texture_->bind();
7572
glBindVertexArray(VAO_);
76-
glDrawArrays(GL_TRIANGLES, 0, 6);
73+
glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);
7774
glBindVertexArray(0);
7875
}
7976
}

src/graphics/PostProcessor.cpp

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ void PostProcessor::render(GLfloat time, GLfloat scale) {
4848
glActiveTexture(GL_TEXTURE0);
4949
glBindTexture(GL_TEXTURE_2D, textureId_);
5050
glBindVertexArray(VAO_);
51-
glDrawArrays(GL_TRIANGLES, 0, 6);
51+
glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);
5252
glBindVertexArray(0);
5353
}
5454

@@ -107,13 +107,10 @@ void PostProcessor::initTexture() {
107107

108108
void PostProcessor::initVAO() {
109109
GLfloat quad[] = {
110-
-1.0f, -1.0f, 0.0f, 0.0f,
111-
1.0f, 1.0f, 1.0f, 1.0f,
112-
-1.0f, 1.0f, 0.0f, 1.0f,
113-
114110
-1.0f, -1.0f, 0.0f, 0.0f,
115111
1.0f, -1.0f, 1.0f, 0.0f,
116-
1.0f, 1.0f, 1.0f, 1.0f
112+
-1.0f, 1.0f, 0.0f, 1.0f,
113+
1.0f, 1.0f, 1.0f, 1.0f,
117114
};
118115

119116
glGenVertexArrays(1, &VAO_);

src/graphics/SpriteRenderer.cpp

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -14,13 +14,10 @@ void SpriteRenderer::init(ShaderProgram* shaderProgram) {
1414

1515
GLfloat vertices[] = {
1616
// Pos // Tex
17-
0.0f, 1.0f, 0.0f, 1.0f,
18-
1.0f, 0.0f, 1.0f, 0.0f,
1917
0.0f, 0.0f, 0.0f, 0.0f,
20-
2118
0.0f, 1.0f, 0.0f, 1.0f,
22-
1.0f, 1.0f, 1.0f, 1.0f,
23-
1.0f, 0.0f, 1.0f, 0.0f
19+
1.0f, 0.0f, 1.0f, 0.0f,
20+
1.0f, 1.0f, 1.0f, 1.0f
2421
};
2522

2623
glGenVertexArrays(1, &VAO_);
@@ -57,7 +54,7 @@ void SpriteRenderer::renderSprite(const Texture* texture,
5754
texture->bind();
5855

5956
glBindVertexArray(VAO_);
60-
glDrawArrays(GL_TRIANGLES, 0, 6);
57+
glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);
6158
glBindVertexArray(0);
6259

6360
shaderProgram_->end();

src/graphics/TextRenderer.cpp

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -44,13 +44,10 @@ void TextRenderer::renderText(const std::string& text, const glm::vec2& position
4444
auto yPosition = position.y;
4545

4646
GLfloat vertices[] = {
47-
xPosition, yPosition, glyph.uvs[0].x, glyph.uvs[0].y,
48-
xPosition + width, yPosition - height, glyph.uvs[1].x, glyph.uvs[1].y,
4947
xPosition, yPosition - height, glyph.uvs[0].x, glyph.uvs[1].y,
50-
5148
xPosition, yPosition, glyph.uvs[0].x, glyph.uvs[0].y,
52-
xPosition + width, yPosition, glyph.uvs[1].x, glyph.uvs[0].y,
5349
xPosition + width, yPosition - height, glyph.uvs[1].x, glyph.uvs[1].y,
50+
xPosition + width, yPosition, glyph.uvs[1].x, glyph.uvs[0].y
5451
};
5552

5653
glBufferSubData(GL_ARRAY_BUFFER, sizeof(vertices) * i, sizeof(vertices), vertices);
@@ -60,7 +57,7 @@ void TextRenderer::renderText(const std::string& text, const glm::vec2& position
6057
}
6158

6259
// Render quads
63-
glDrawArrays(GL_TRIANGLES, 0, 6 * text.length());
60+
glDrawArrays(GL_TRIANGLE_STRIP, 0, 4 * text.length());
6461

6562
glBindBuffer(GL_ARRAY_BUFFER, 0);
6663
glBindVertexArray(0);

src/main.cpp

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,13 @@
33
#include <GLFW/glfw3.h>
44
#include "Game.h"
55

6-
//const int width = 800;
7-
//const int height = 600;
8-
//bool isFullScreen = false;
6+
const int width = 800;
7+
const int height = 600;
8+
bool isFullScreen = false;
99

10-
const int width = 1920;
11-
const int height = 1080;
12-
bool isFullScreen = true;
10+
//const int width = 1920;
11+
//const int height = 1080;
12+
//bool isFullScreen = true;
1313

1414
int main(int argc, char* argv[]) {
1515
Game breakout(width, height, isFullScreen);

0 commit comments

Comments
 (0)