feat: circular orbit
This commit is contained in:
parent
16bc542a69
commit
ad51be518b
|
@ -7,9 +7,9 @@
|
||||||
|
|
||||||
#include "gfx.hpp"
|
#include "gfx.hpp"
|
||||||
|
|
||||||
Icosphere::Icosphere(float radius, int subdivisions, GLuint shaderProgram, glm::vec3 position) :
|
Icosphere::Icosphere(float radius, int subdivisions, GLuint shaderProgram) :
|
||||||
_shaderProgram(shaderProgram),
|
_shaderProgram(shaderProgram),
|
||||||
_position(position)
|
_position({})
|
||||||
{
|
{
|
||||||
generateVertices(radius, subdivisions);
|
generateVertices(radius, subdivisions);
|
||||||
|
|
||||||
|
@ -157,6 +157,11 @@ void Icosphere::render()
|
||||||
glDrawElements(GL_TRIANGLES, _indices.size(), GL_UNSIGNED_INT, 0);
|
glDrawElements(GL_TRIANGLES, _indices.size(), GL_UNSIGNED_INT, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Icosphere::setPosition(glm::vec3 position)
|
||||||
|
{
|
||||||
|
_position = position;
|
||||||
|
}
|
||||||
|
|
||||||
Icosphere::~Icosphere()
|
Icosphere::~Icosphere()
|
||||||
{
|
{
|
||||||
glDeleteVertexArrays(1, &_vao);
|
glDeleteVertexArrays(1, &_vao);
|
||||||
|
|
|
@ -10,9 +10,11 @@
|
||||||
class Icosphere
|
class Icosphere
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
Icosphere(float radius, int subdivisions, GLuint shaderProgram, glm::vec3 position);
|
Icosphere(float radius, int subdivisions, GLuint shaderProgram);
|
||||||
void render();
|
void render();
|
||||||
|
|
||||||
|
void setPosition(glm::vec3 position);
|
||||||
|
|
||||||
~Icosphere();
|
~Icosphere();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
10
src/main.cpp
10
src/main.cpp
|
@ -51,8 +51,8 @@ int main()
|
||||||
GLuint litProgram = compileShaderProgram("./frag_lit.glsl");
|
GLuint litProgram = compileShaderProgram("./frag_lit.glsl");
|
||||||
GLuint unlitProgram = compileShaderProgram("./frag_unlit.glsl");
|
GLuint unlitProgram = compileShaderProgram("./frag_unlit.glsl");
|
||||||
|
|
||||||
Icosphere planet(0.4, 2, litProgram, glm::vec3(0.0, 0.0, 0.0));
|
Icosphere planet(0.4, 2, litProgram);
|
||||||
Icosphere orbiter(0.1, 2, litProgram, glm::vec3(0.6, 0.0, 0.0));
|
Icosphere orbiter(0.1, 2, litProgram);
|
||||||
Orbit orbit(100);
|
Orbit orbit(100);
|
||||||
|
|
||||||
// Main loop
|
// Main loop
|
||||||
|
@ -62,6 +62,12 @@ int main()
|
||||||
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
|
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
|
||||||
|
|
||||||
float time = glfwGetTime();
|
float time = glfwGetTime();
|
||||||
|
float r = .7;
|
||||||
|
float x = cos(time);
|
||||||
|
float y = sin(time);
|
||||||
|
glm::vec3 pos(x, 0, y);
|
||||||
|
pos *= r;
|
||||||
|
orbiter.setPosition(pos);
|
||||||
|
|
||||||
// Render lit objects
|
// Render lit objects
|
||||||
glUseProgram(litProgram);
|
glUseProgram(litProgram);
|
||||||
|
|
Loading…
Reference in New Issue