Advertisement
Guest User

Untitled

a guest
Aug 26th, 2014
52
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.30 KB | None | 0 0
  1.     m_shader->BegingShader();
  2.  
  3.     GLuint vao;
  4.     glGenVertexArrays(1, &vao);
  5.  
  6.     GLuint vbo;
  7.     glGenBuffers(1, &vbo);
  8.     glBindBuffer(GL_ARRAY_BUFFER, vbo);
  9.     glBufferData(GL_ARRAY_BUFFER, sizeof(float) * 18 * 600, NULL, GL_DYNAMIC_DRAW);
  10.     int index = 0;
  11.     // front
  12.     for (int y = -5; y < 5; y++)
  13.     {
  14.         // Loop it 10 times! ^ v
  15.         for (int x = -5; x < 5; x++)
  16.         {
  17.             float vertices[] = {
  18.                 x + 0.0f, y + 0.0f, -5.0f,
  19.                 x + 1.0f, y + 0.0f, -5.0f,
  20.                 x + 1.0f, y + 1.0f, -5.0f,
  21.                 x + 0.0f, y + 0.0f, -5.0f,
  22.                 x + 1.0f, y + 1.0f, -5.0f,
  23.                 x + 0.0f, y + 1.0f, -5.0f,
  24.             };
  25.             for (int i = 0; i < 6; i++)
  26.                 Spherify(vertices[i * 3], vertices[i * 3 + 1], vertices[i * 3 + 2], 5.0);
  27.             glBufferSubData(GL_ARRAY_BUFFER, (index++ * 18) * sizeof(float), sizeof(float) * 18, vertices);
  28.         }
  29.     }
  30.  
  31.     index = 0;
  32.     // left
  33.     for (int y = -5; y < 5; y++)
  34.     {
  35.         for (int z = -5; z < 5; z++)
  36.         {
  37.             float vertices[] = {
  38.                 -5.0f, y + 0.0f, z + 0.0f,
  39.                 -5.0f, y + 1.0f, z + 0.0f,
  40.                 -5.0f, y + 1.0f, z + 1.0f,
  41.                 -5.0f, y + 0.0f, z + 0.0f,
  42.                 -5.0f, y + 1.0f, z + 1.0f,
  43.                 -5.0f, y + 0.0f, z + 1.0f,
  44.             };
  45.             for (int i = 0; i < 6; i++)
  46.                 Spherify(vertices[i * 3], vertices[i * 3 + 1], vertices[i * 3 + 2], 5.0);
  47.             glBufferSubData(GL_ARRAY_BUFFER, (index++ * 18 + 18 * 100) * sizeof(float), sizeof(float) * 18, vertices);
  48.         }
  49.     }
  50.  
  51.     index = 0;
  52.     // back
  53.     for (int y = -5; y < 5; y++)
  54.     {
  55.         for (int x = -5; x < 5; x++)
  56.         {
  57.             float vertices[] = {
  58.                 x + 0.0f, y + 0.0f, 5.0f,
  59.                 x + 1.0f, y + 0.0f, 5.0f,
  60.                 x + 1.0f, y + 1.0f, 5.0f,
  61.                 x + 0.0f, y + 0.0f, 5.0f,
  62.                 x + 1.0f, y + 1.0f, 5.0f,
  63.                 x + 0.0f, y + 1.0f, 5.0f,
  64.             };
  65.             for (int i = 0; i < 6; i++)
  66.                 Spherify(vertices[i * 3], vertices[i * 3 + 1], vertices[i * 3 + 2], 5.0);
  67.             glBufferSubData(GL_ARRAY_BUFFER, (index++ * 18 + 18 * 200) * sizeof(float), sizeof(float) * 18, vertices);
  68.         }
  69.     }
  70.  
  71.     index = 0;
  72.     //top
  73.     for (int x = -5; x < 5; x++)
  74.     {
  75.         for (int z = -5; z < 5; z++)
  76.         {
  77.             float vertices[] = {
  78.                 x + 0.0f, -5.0f, z + 0.0f,
  79.                 x + 1.0f, -5.0f, z + 0.0f,
  80.                 x + 1.0f, -5.0f, z + 1.0f,
  81.                 x + 0.0f, -5.0f, z + 0.0f,
  82.                 x + 1.0f, -5.0f, z + 1.0f,
  83.                 x + 0.0f, -5.0f, z + 1.0f,
  84.             };
  85.             for (int i = 0; i < 6; i++)
  86.                 Spherify(vertices[i * 3], vertices[i * 3 + 1], vertices[i * 3 + 2], 5.0);
  87.             glBufferSubData(GL_ARRAY_BUFFER, (index++ * 18 + 18 * 300) * sizeof(float), sizeof(float) * 18, vertices);
  88.         }
  89.     }
  90.  
  91.     index = 0;
  92.     //bottom
  93.     for (int x = -5; x < 5; x++)
  94.     {
  95.         for (int z = -5; z < 5; z++)
  96.         {
  97.             float vertices[] = {
  98.                 x + 0.0f, 5.0f, z + 0.0f,
  99.                 x + 1.0f, 5.0f, z + 0.0f,
  100.                 x + 1.0f, 5.0f, z + 1.0f,
  101.                 x + 0.0f, 5.0f, z + 0.0f,
  102.                 x + 1.0f, 5.0f, z + 1.0f,
  103.                 x + 0.0f, 5.0f, z + 1.0f,
  104.             };
  105.             for (int i = 0; i < 6; i++)
  106.                 Spherify(vertices[i * 3], vertices[i * 3 + 1], vertices[i * 3 + 2], 5.0);
  107.             glBufferSubData(GL_ARRAY_BUFFER, (index++ * 18 + 18 * 400) * sizeof(float), sizeof(float) * 18, vertices);
  108.         }
  109.     }
  110.  
  111.     index = 0;
  112.     // left
  113.     for (int y = -5; y < 5; y++)
  114.     {
  115.         for (int z = -5; z < 5; z++)
  116.         {
  117.             float vertices[] = {
  118.                 5.0f, y + 0.0f, z + 0.0f,
  119.                 5.0f, y + 1.0f, z + 0.0f,
  120.                 5.0f, y + 1.0f, z + 1.0f,
  121.                 5.0f, y + 0.0f, z + 0.0f,
  122.                 5.0f, y + 1.0f, z + 1.0f,
  123.                 5.0f, y + 0.0f, z + 1.0f,
  124.             };
  125.             for (int i = 0; i < 6; i++)
  126.                 Spherify(vertices[i * 3], vertices[i * 3 + 1], vertices[i * 3 + 2], 5.0);
  127.             glBufferSubData(GL_ARRAY_BUFFER, (index++ * 18 + 18 * 500) * sizeof(float), sizeof(float) * 18, vertices);
  128.         }
  129.     }
  130.  
  131.     glBindVertexArray(vao);
  132.     glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 0, (GLubyte*)NULL);
  133.     glEnableVertexAttribArray(0);
  134.  
  135.     float x = sin(time);
  136.     float y = cos(time);
  137.  
  138.     glm::mat4 model = glm::mat4(1.0f);
  139.     model = glm::scale(model, glm::vec3(planetSize, planetSize, planetSize));
  140.  
  141.     // Rotation speed has to be atleast 1.0f for the planet to rotate
  142.     if (rotationSpeed >= 1.0f)
  143.         model = glm::rotate(model, (float)time * rotationSpeed, glm::vec3(5.0, 0.0, 0.0));
  144.  
  145.     glm::mat4 mv = camera.view() * model;
  146.  
  147.     m_shader->SetShaderMatrix4fv("camera", camera.matrix(), 0);
  148.     m_shader->SetShaderMatrix4fv("model", model, 0);
  149.  
  150.     glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
  151.     glDrawArrays(GL_TRIANGLES, 0, 600 * 6);
  152.     glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
  153.  
  154.     glDeleteBuffers(1, &vbo);
  155.     glDeleteVertexArrays(1, &vao);
  156.  
  157.     m_shader->EndShader();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement