Add some rotation
This commit is contained in:
parent
c67302589e
commit
3395abcc7a
6 changed files with 173 additions and 23 deletions
|
@ -12,7 +12,7 @@ Build Type=Debug
|
||||||
CMake Binary=file:///usr/local/bin/cmake
|
CMake Binary=file:///usr/local/bin/cmake
|
||||||
Environment Profile=
|
Environment Profile=
|
||||||
Extra Arguments=
|
Extra Arguments=
|
||||||
Install Directory=
|
Install Directory=file:///usr/local
|
||||||
|
|
||||||
[CustomDefinesAndIncludes][ProjectPath0]
|
[CustomDefinesAndIncludes][ProjectPath0]
|
||||||
Defines=\x00\x00\x00\x00
|
Defines=\x00\x00\x00\x00
|
||||||
|
@ -24,6 +24,134 @@ Name=GCC
|
||||||
Path=gcc
|
Path=gcc
|
||||||
Type=GCC
|
Type=GCC
|
||||||
|
|
||||||
|
[Filters]
|
||||||
|
size=25
|
||||||
|
|
||||||
|
[Filters][0]
|
||||||
|
inclusive=0
|
||||||
|
pattern=.*
|
||||||
|
targets=3
|
||||||
|
|
||||||
|
[Filters][1]
|
||||||
|
inclusive=0
|
||||||
|
pattern=.git
|
||||||
|
targets=2
|
||||||
|
|
||||||
|
[Filters][10]
|
||||||
|
inclusive=0
|
||||||
|
pattern=*.o
|
||||||
|
targets=1
|
||||||
|
|
||||||
|
[Filters][11]
|
||||||
|
inclusive=0
|
||||||
|
pattern=*.a
|
||||||
|
targets=1
|
||||||
|
|
||||||
|
[Filters][12]
|
||||||
|
inclusive=0
|
||||||
|
pattern=*.so
|
||||||
|
targets=1
|
||||||
|
|
||||||
|
[Filters][13]
|
||||||
|
inclusive=0
|
||||||
|
pattern=*.so.*
|
||||||
|
targets=1
|
||||||
|
|
||||||
|
[Filters][14]
|
||||||
|
inclusive=0
|
||||||
|
pattern=moc_*.cpp
|
||||||
|
targets=1
|
||||||
|
|
||||||
|
[Filters][15]
|
||||||
|
inclusive=0
|
||||||
|
pattern=*.moc
|
||||||
|
targets=1
|
||||||
|
|
||||||
|
[Filters][16]
|
||||||
|
inclusive=0
|
||||||
|
pattern=ui_*.h
|
||||||
|
targets=1
|
||||||
|
|
||||||
|
[Filters][17]
|
||||||
|
inclusive=0
|
||||||
|
pattern=qrc_*.cpp
|
||||||
|
targets=1
|
||||||
|
|
||||||
|
[Filters][18]
|
||||||
|
inclusive=0
|
||||||
|
pattern=*~
|
||||||
|
targets=1
|
||||||
|
|
||||||
|
[Filters][19]
|
||||||
|
inclusive=0
|
||||||
|
pattern=*.orig
|
||||||
|
targets=1
|
||||||
|
|
||||||
|
[Filters][2]
|
||||||
|
inclusive=0
|
||||||
|
pattern=CVS
|
||||||
|
targets=2
|
||||||
|
|
||||||
|
[Filters][20]
|
||||||
|
inclusive=0
|
||||||
|
pattern=.*.kate-swp
|
||||||
|
targets=1
|
||||||
|
|
||||||
|
[Filters][21]
|
||||||
|
inclusive=0
|
||||||
|
pattern=.*.swp
|
||||||
|
targets=1
|
||||||
|
|
||||||
|
[Filters][22]
|
||||||
|
inclusive=0
|
||||||
|
pattern=*.pyc
|
||||||
|
targets=1
|
||||||
|
|
||||||
|
[Filters][23]
|
||||||
|
inclusive=0
|
||||||
|
pattern=*.pyo
|
||||||
|
targets=1
|
||||||
|
|
||||||
|
[Filters][24]
|
||||||
|
inclusive=0
|
||||||
|
pattern=/testgame.core
|
||||||
|
targets=1
|
||||||
|
|
||||||
|
[Filters][3]
|
||||||
|
inclusive=0
|
||||||
|
pattern=.svn
|
||||||
|
targets=2
|
||||||
|
|
||||||
|
[Filters][4]
|
||||||
|
inclusive=0
|
||||||
|
pattern=_svn
|
||||||
|
targets=2
|
||||||
|
|
||||||
|
[Filters][5]
|
||||||
|
inclusive=0
|
||||||
|
pattern=SCCS
|
||||||
|
targets=2
|
||||||
|
|
||||||
|
[Filters][6]
|
||||||
|
inclusive=0
|
||||||
|
pattern=_darcs
|
||||||
|
targets=2
|
||||||
|
|
||||||
|
[Filters][7]
|
||||||
|
inclusive=0
|
||||||
|
pattern=.hg
|
||||||
|
targets=2
|
||||||
|
|
||||||
|
[Filters][8]
|
||||||
|
inclusive=0
|
||||||
|
pattern=.bzr
|
||||||
|
targets=2
|
||||||
|
|
||||||
|
[Filters][9]
|
||||||
|
inclusive=0
|
||||||
|
pattern=__pycache__
|
||||||
|
targets=2
|
||||||
|
|
||||||
[Launch]
|
[Launch]
|
||||||
Launch Configurations=Launch Configuration 0
|
Launch Configurations=Launch Configuration 0
|
||||||
|
|
||||||
|
|
35
main.cpp
35
main.cpp
|
@ -4,6 +4,9 @@
|
||||||
#include <SDL.h>
|
#include <SDL.h>
|
||||||
#include <GL/glew.h>
|
#include <GL/glew.h>
|
||||||
#include <renderer/shader.h>
|
#include <renderer/shader.h>
|
||||||
|
#include <glm/glm.hpp>
|
||||||
|
#include <glm/gtc/matrix_transform.hpp>
|
||||||
|
#include <glm/gtc/type_ptr.hpp>
|
||||||
using namespace std;
|
using namespace std;
|
||||||
bool TestGame::init()
|
bool TestGame::init()
|
||||||
{
|
{
|
||||||
|
@ -24,7 +27,7 @@ bool TestGame::init()
|
||||||
shaders.push_back(fs);
|
shaders.push_back(fs);
|
||||||
program=link(shaders);
|
program=link(shaders);
|
||||||
//Set attributes
|
//Set attributes
|
||||||
const char* attribute_name = "coord2d";
|
const char* attribute_name = "coord3d";
|
||||||
attribute_coord2d = glGetAttribLocation(program, attribute_name);
|
attribute_coord2d = glGetAttribLocation(program, attribute_name);
|
||||||
if (attribute_coord2d == -1) {
|
if (attribute_coord2d == -1) {
|
||||||
cerr << "Could not bind attribute " << attribute_name << endl;
|
cerr << "Could not bind attribute " << attribute_name << endl;
|
||||||
|
@ -34,7 +37,7 @@ bool TestGame::init()
|
||||||
attribute_v_color = glGetAttribLocation(program, attribute_name);
|
attribute_v_color = glGetAttribLocation(program, attribute_name);
|
||||||
if (attribute_v_color == -1) {
|
if (attribute_v_color == -1) {
|
||||||
cerr << "Could not bind attribute " << attribute_name << endl;
|
cerr << "Could not bind attribute " << attribute_name << endl;
|
||||||
return false;
|
throw nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
GLfloat triangle_colors[] = {
|
GLfloat triangle_colors[] = {
|
||||||
|
@ -42,6 +45,12 @@ bool TestGame::init()
|
||||||
0.0, 0.0, 1.0,
|
0.0, 0.0, 1.0,
|
||||||
1.0, 0.0, 0.0,
|
1.0, 0.0, 0.0,
|
||||||
};
|
};
|
||||||
|
const char* uniform_name = "m_transform";
|
||||||
|
uniform_m_transform = glGetUniformLocation(program, uniform_name);
|
||||||
|
if (uniform_m_transform == -1) {
|
||||||
|
cerr << "Could not bind uniform " << uniform_name << endl;
|
||||||
|
throw nullptr;
|
||||||
|
}
|
||||||
t1.init(triangle_colors,sizeof(triangle_colors));
|
t1.init(triangle_colors,sizeof(triangle_colors));
|
||||||
t2.init(triangle_colors,sizeof(triangle_colors));
|
t2.init(triangle_colors,sizeof(triangle_colors));
|
||||||
t3.init(triangle_colors,sizeof(triangle_colors));
|
t3.init(triangle_colors,sizeof(triangle_colors));
|
||||||
|
@ -51,13 +60,8 @@ void TestGame::stop()
|
||||||
{
|
{
|
||||||
//To be written
|
//To be written
|
||||||
}
|
}
|
||||||
bool TestGame::tick()
|
void TestGame::logic()
|
||||||
{
|
{
|
||||||
SDL_Event ev;
|
|
||||||
while (SDL_PollEvent(&ev)) {
|
|
||||||
if (ev.type == SDL_QUIT)
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
//Calculate colors
|
//Calculate colors
|
||||||
if(state.bright)
|
if(state.bright)
|
||||||
state.brightness+=0.001;
|
state.brightness+=0.001;
|
||||||
|
@ -73,9 +77,24 @@ bool TestGame::tick()
|
||||||
0.0, state.brightness, 0.0,
|
0.0, state.brightness, 0.0,
|
||||||
0.0, 0.0, state.brightness,
|
0.0, 0.0, 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));
|
t1.update(triangle_colors, sizeof(triangle_colors));
|
||||||
t2.update(triangle_colors, sizeof(triangle_colors));
|
t2.update(triangle_colors, sizeof(triangle_colors));
|
||||||
t3.update(triangle_colors, sizeof(triangle_colors));
|
t3.update(triangle_colors, sizeof(triangle_colors));
|
||||||
|
}
|
||||||
|
|
||||||
|
bool TestGame::tick()
|
||||||
|
{
|
||||||
|
SDL_Event ev;
|
||||||
|
while (SDL_PollEvent(&ev)) {
|
||||||
|
if (ev.type == SDL_QUIT)
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
logic();
|
||||||
render();
|
render();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
2
main.h
2
main.h
|
@ -9,10 +9,12 @@ private:
|
||||||
GLuint program;
|
GLuint program;
|
||||||
GLint attribute_coord2d;
|
GLint attribute_coord2d;
|
||||||
auto render() -> void;
|
auto render() -> void;
|
||||||
|
void logic();
|
||||||
VertexShader *vs;
|
VertexShader *vs;
|
||||||
FragmentShader *fs;
|
FragmentShader *fs;
|
||||||
GLint attribute_v_color;
|
GLint attribute_v_color;
|
||||||
GameState state;
|
GameState state;
|
||||||
|
GLint uniform_m_transform;
|
||||||
protected:
|
protected:
|
||||||
virtual auto tick() -> bool;
|
virtual auto tick() -> bool;
|
||||||
virtual auto init() -> bool;
|
virtual auto init() -> bool;
|
||||||
|
|
|
@ -17,9 +17,9 @@ Triangle::Triangle(float ax, float ay, float bx, float by, float cx, float cy)
|
||||||
}
|
}
|
||||||
auto Triangle::init(GLfloat * colors, int size) -> void {
|
auto Triangle::init(GLfloat * colors, int size) -> void {
|
||||||
GLfloat triangle_vertices[] = {
|
GLfloat triangle_vertices[] = {
|
||||||
A.x, A.y, colors[0], colors[1], colors[2],
|
A.x, A.y, 0.0, colors[0], colors[1], colors[2],
|
||||||
B.x, B.y, colors[3], colors[4], colors[5],
|
B.x, B.y, 0.0, colors[3], colors[4], colors[5],
|
||||||
C.x, C.y, colors[6], colors[7], colors[8]
|
C.x, C.y, 0.0, colors[6], colors[7], colors[8]
|
||||||
};
|
};
|
||||||
glGenBuffers(1, &vbo_triangle);
|
glGenBuffers(1, &vbo_triangle);
|
||||||
glBindBuffer(GL_ARRAY_BUFFER, vbo_triangle); //Create VBO
|
glBindBuffer(GL_ARRAY_BUFFER, vbo_triangle); //Create VBO
|
||||||
|
@ -33,8 +33,8 @@ Triangle::~Triangle()
|
||||||
bool Triangle::render(GLint attrib, GLint color_attrib)
|
bool Triangle::render(GLint attrib, GLint color_attrib)
|
||||||
{
|
{
|
||||||
glBindBuffer(GL_ARRAY_BUFFER, vbo_triangle);
|
glBindBuffer(GL_ARRAY_BUFFER, vbo_triangle);
|
||||||
glVertexAttribPointer(attrib, 2, GL_FLOAT, GL_FALSE, 5*sizeof(GLfloat), 0);
|
glVertexAttribPointer(attrib, 3, GL_FLOAT, GL_FALSE, 6*sizeof(GLfloat), 0);
|
||||||
glVertexAttribPointer(color_attrib, 3, GL_FLOAT, GL_FALSE, 5*sizeof(GLfloat), (GLvoid*) (2 * sizeof(GLfloat)));
|
glVertexAttribPointer(color_attrib, 3, GL_FLOAT, GL_FALSE, 6*sizeof(GLfloat), (GLvoid*) (3 * sizeof(GLfloat)));
|
||||||
glDrawArrays(GL_TRIANGLES, 0, 3);
|
glDrawArrays(GL_TRIANGLES, 0, 3);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -51,9 +51,9 @@ auto Triangle::update(GLfloat* colors, int size) -> void
|
||||||
{
|
{
|
||||||
glDeleteBuffers(1, &vbo_triangle);
|
glDeleteBuffers(1, &vbo_triangle);
|
||||||
GLfloat triangle_vertices[] = {
|
GLfloat triangle_vertices[] = {
|
||||||
A.x, A.y, colors[0], colors[1], colors[2],
|
A.x, A.y, 0.0, colors[0], colors[1], colors[2],
|
||||||
B.x, B.y, colors[3], colors[4], colors[5],
|
B.x, B.y, 0.0, colors[3], colors[4], colors[5],
|
||||||
C.x, C.y, colors[6], colors[7], colors[8]
|
C.x, C.y, 0.0, colors[6], colors[7], colors[8]
|
||||||
};
|
};
|
||||||
glGenBuffers(1, &vbo_triangle);
|
glGenBuffers(1, &vbo_triangle);
|
||||||
glBindBuffer(GL_ARRAY_BUFFER, vbo_triangle); //Create VBO
|
glBindBuffer(GL_ARRAY_BUFFER, vbo_triangle); //Create VBO
|
||||||
|
|
|
@ -6,10 +6,10 @@
|
||||||
# endif
|
# endif
|
||||||
#endif
|
#endif
|
||||||
varying vec3 f_color;
|
varying vec3 f_color;
|
||||||
varying vec2 f_coord2d;
|
varying vec3 f_coord3d;
|
||||||
void main(void) {
|
void main(void) {
|
||||||
gl_FragColor[0] = f_color[0];
|
gl_FragColor[0] = f_color[0];
|
||||||
gl_FragColor[1] = f_color[1];
|
gl_FragColor[1] = f_color[1];
|
||||||
gl_FragColor[2] = f_color[2];
|
gl_FragColor[2] = f_color[2];
|
||||||
gl_FragColor[3] = f_coord2d.y+1;
|
gl_FragColor[3] = f_coord3d.y+1;
|
||||||
}
|
}
|
|
@ -1,9 +1,10 @@
|
||||||
attribute vec2 coord2d;
|
attribute vec3 coord3d;
|
||||||
attribute vec3 v_color;
|
attribute vec3 v_color;
|
||||||
varying vec3 f_color;
|
varying vec3 f_color;
|
||||||
varying vec2 f_coord2d;
|
varying vec3 f_coord3d;
|
||||||
|
uniform mat4 m_transform;
|
||||||
void main(void) {
|
void main(void) {
|
||||||
gl_Position = vec4(coord2d, 0.0, 1.0);
|
gl_Position = m_transform*vec4(coord3d, 1.0);
|
||||||
f_color = v_color;
|
f_color = v_color;
|
||||||
f_coord2d = coord2d;
|
f_coord3d = (m_transform*vec4(coord3d,1.0)).xyz;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue