Add Quadrangles
This commit is contained in:
parent
3395abcc7a
commit
e59bea8574
7 changed files with 89 additions and 13 deletions
|
@ -2,7 +2,7 @@ cmake_minimum_required(VERSION 2.6)
|
|||
project(testgame)
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -I..")
|
||||
set(CMAKE_LD_FLAGS "${CMAKE_LD_FLAGS} -L/usr/local/bin")
|
||||
add_executable(testgame main.cpp renderer/main.cpp renderer/shader.cpp renderer/shapes/triangle.cpp)
|
||||
add_executable(testgame main.cpp renderer/main.cpp renderer/shader.cpp renderer/shapes/triangle.cpp renderer/shapes/quad.cpp)
|
||||
INCLUDE(FindPkgConfig)
|
||||
PKG_SEARCH_MODULE(SDL2 REQUIRED sdl2)
|
||||
INCLUDE_DIRECTORIES(${SDL2_INCLUDE_DIRS})
|
||||
|
|
18
main.cpp
18
main.cpp
|
@ -51,9 +51,9 @@ bool TestGame::init()
|
|||
cerr << "Could not bind uniform " << uniform_name << endl;
|
||||
throw nullptr;
|
||||
}
|
||||
t1.init(triangle_colors,sizeof(triangle_colors));
|
||||
t2.init(triangle_colors,sizeof(triangle_colors));
|
||||
t3.init(triangle_colors,sizeof(triangle_colors));
|
||||
t1.init(triangle_colors);
|
||||
t2.init(triangle_colors);
|
||||
t3.init(triangle_colors);
|
||||
return true;
|
||||
}
|
||||
void TestGame::stop()
|
||||
|
@ -77,14 +77,20 @@ void TestGame::logic()
|
|||
0.0, state.brightness, 0.0,
|
||||
0.0, 0.0, state.brightness,
|
||||
};
|
||||
GLfloat quad_colors[] = {
|
||||
state.brightness, 0.0, 0.0,
|
||||
0.0, state.brightness, 0.0,
|
||||
0.0, 0.0, state.brightness,
|
||||
state.brightness, state.brightness, state.brightness
|
||||
};
|
||||
float angle = SDL_GetTicks() / 1000.0 * 45;
|
||||
glm::vec3 axis_z(0, 0, 1);
|
||||
float move = sinf(SDL_GetTicks() / 1000.0 * (2*3.14) / 5);
|
||||
glm::mat4 m_transform = glm::rotate(glm::mat4(1.0f), glm::radians(angle), axis_z) * glm::translate(glm::mat4(1.0f), glm::vec3(move, 0.0, 0.0));
|
||||
glUniformMatrix4fv(uniform_m_transform, 1, GL_FALSE, glm::value_ptr(m_transform));
|
||||
t1.update(triangle_colors, sizeof(triangle_colors));
|
||||
t2.update(triangle_colors, sizeof(triangle_colors));
|
||||
t3.update(triangle_colors, sizeof(triangle_colors));
|
||||
t1.update(triangle_colors);
|
||||
t2.update(triangle_colors);
|
||||
t3.update(quad_colors);
|
||||
}
|
||||
|
||||
bool TestGame::tick()
|
||||
|
|
6
main.h
6
main.h
|
@ -1,11 +1,13 @@
|
|||
#include <renderer/main.h>
|
||||
#include <renderer/shader.h>
|
||||
#include <renderer/shapes/triangle.h>
|
||||
#include <renderer/shapes/quad.h>
|
||||
#include <GL/glew.h>
|
||||
#include <state.h>
|
||||
class TestGame: public MainClass {
|
||||
private:
|
||||
Triangle t1, t2, t3;
|
||||
Triangle t1, t2;
|
||||
Quad t3;
|
||||
GLuint program;
|
||||
GLint attribute_coord2d;
|
||||
auto render() -> void;
|
||||
|
@ -19,7 +21,7 @@ protected:
|
|||
virtual auto tick() -> bool;
|
||||
virtual auto init() -> bool;
|
||||
public:
|
||||
TestGame(): MainClass(640,480), t1(0.0, 0.0, 0.5, 1.0, 1.0, 0.0), t2(1.0,0.0,1.5,1.0,2.0,0.0), t3(0.5,1.0,1.0,2.0,1.5,1.0) {
|
||||
TestGame(): MainClass(640,480), t1(0.0, 0.0, 0.5, 1.0, 1.0, 0.0), t2(1.0,0.0,1.5,1.0,2.0,0.0), t3(0.5,1.0,0.5,2.0,1.5,2.0,1.5,1.0) {
|
||||
state.bright=true;
|
||||
state.brightness=0.0;
|
||||
};
|
||||
|
|
50
renderer/shapes/quad.cpp
Normal file
50
renderer/shapes/quad.cpp
Normal file
|
@ -0,0 +1,50 @@
|
|||
#include <renderer/shapes/quad.h>
|
||||
void Quad::init(GLfloat* colors)
|
||||
{
|
||||
GLfloat colors1[] = {
|
||||
colors[0], colors[1], colors[2],
|
||||
colors[3], colors[4], colors[5],
|
||||
colors[6], colors[7], colors[8]
|
||||
};
|
||||
GLfloat colors2[] = {
|
||||
colors[3], colors[4], colors[5],
|
||||
colors[6], colors[7], colors[8],
|
||||
colors[9], colors[10], colors[11]
|
||||
};
|
||||
a.init(colors1);
|
||||
b.init(colors2);
|
||||
}
|
||||
Quad::Quad(float ax, float ay, float bx, float by, float cx, float cy, float dx, float dy): a(ax, ay, bx, by, dx, dy), b(bx, by, dx, dy, cx, cy)
|
||||
{
|
||||
|
||||
}
|
||||
bool Quad::render(GLint attrib, GLint colorAttrib)
|
||||
{
|
||||
if(a.render(attrib, colorAttrib))
|
||||
return b.render(attrib, colorAttrib);
|
||||
return false;
|
||||
}
|
||||
void Quad::setPos(float ax, float ay, float bx, float by, float cx, float cy, float dx, float dy)
|
||||
{
|
||||
a.setPos(ax, ay, bx, by, dx, dy);
|
||||
b.setPos(bx, by, dx, dy, cx, cy);
|
||||
}
|
||||
void Quad::update(GLfloat* colors)
|
||||
{
|
||||
GLfloat colors1[] = {
|
||||
colors[0], colors[1], colors[2],
|
||||
colors[3], colors[4], colors[5],
|
||||
colors[6], colors[7], colors[8]
|
||||
};
|
||||
GLfloat colors2[] = {
|
||||
colors[3], colors[4], colors[5],
|
||||
colors[6], colors[7], colors[8],
|
||||
colors[9], colors[10], colors[11]
|
||||
};
|
||||
a.update(colors1);
|
||||
b.update(colors2);
|
||||
}
|
||||
Quad::~Quad()
|
||||
{
|
||||
|
||||
}
|
18
renderer/shapes/quad.h
Normal file
18
renderer/shapes/quad.h
Normal file
|
@ -0,0 +1,18 @@
|
|||
#ifndef __SHAPE_QUAD_HPP
|
||||
#define __SHAPE_QUAD_HPP
|
||||
#include <GL/glew.h>
|
||||
#include <renderer/shapes/float2D.h>
|
||||
#include <renderer/shapes/triangle.h>
|
||||
class Quad {
|
||||
private:
|
||||
GLuint vbo_triangle;
|
||||
Triangle a, b;
|
||||
public:
|
||||
Quad(float ax, float ay, float bx, float by, float cx, float cy, float dx, float dy);
|
||||
~Quad();
|
||||
auto init(GLfloat * colors) -> void;
|
||||
auto render(GLint attrib, GLint colorAttrib) -> bool;
|
||||
auto setPos(float ax, float ay, float bx, float by, float cx, float cy, float dx, float dy) -> void;
|
||||
auto update(GLfloat* colors) -> void;
|
||||
};
|
||||
#endif
|
|
@ -15,7 +15,7 @@ Triangle::Triangle(float ax, float ay, float bx, float by, float cx, float cy)
|
|||
C.y=cy-1.0;
|
||||
|
||||
}
|
||||
auto Triangle::init(GLfloat * colors, int size) -> void {
|
||||
auto Triangle::init(GLfloat * colors) -> void {
|
||||
GLfloat triangle_vertices[] = {
|
||||
A.x, A.y, 0.0, colors[0], colors[1], colors[2],
|
||||
B.x, B.y, 0.0, colors[3], colors[4], colors[5],
|
||||
|
@ -47,7 +47,7 @@ auto Triangle::setPos(float ax, float ay, float bx, float by, float cx, float cy
|
|||
C.x=cx-1.0;
|
||||
C.y=cy-1.0;
|
||||
}
|
||||
auto Triangle::update(GLfloat* colors, int size) -> void
|
||||
auto Triangle::update(GLfloat* colors) -> void
|
||||
{
|
||||
glDeleteBuffers(1, &vbo_triangle);
|
||||
GLfloat triangle_vertices[] = {
|
||||
|
|
|
@ -12,9 +12,9 @@ public:
|
|||
Triangle(float x, float y, float alen, float blen, float clen);
|
||||
Triangle(float ax, float ay, float bx, float by, float cx, float cy);
|
||||
~Triangle();
|
||||
auto init(GLfloat * colors, int size) -> void;
|
||||
auto init(GLfloat * colors) -> void;
|
||||
auto render(GLint attrib, GLint colorAttrib) -> bool;
|
||||
auto setPos(float ax, float ay, float bx, float by, float cx, float cy) -> void;
|
||||
auto update(GLfloat * colors, int size) -> void;
|
||||
auto update(GLfloat* colors) -> void;
|
||||
};
|
||||
#endif
|
Loading…
Reference in a new issue