feat: circular orbit

This commit is contained in:
ktyl 2023-08-14 01:45:54 +02:00
parent 16bc542a69
commit ad51be518b
3 changed files with 18 additions and 5 deletions

View File

@ -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);

View File

@ -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:

View File

@ -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);