Создаю солнечную систему в OpenGL, но не могу отобразить сферуC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Создаю солнечную систему в OpenGL, но не могу отобразить сферу

Сообщение Anonymous »

Я выполняю задание по солнечной системе. Я продолжаю сталкиваться с одной и той же проблемой: что бы я ни делал, я не могу отобразить необходимые сферы. Например, я должен визуализировать сферу земли и солнца, но сфера вообще не отображается.
Мой код выглядит следующим образом:
fshader:
#version 150

uniform vec4 color;
out vec4 fColor;

void main() {
fColor = color;
}

vshader:
#version 150

in vec4 vPosition;
uniform mat4 trans;

void main()
{
gl_Position = trans * vPosition;
}

Основной код:
#include
#include
#include "Angel.h"
#include
#include "Sphere.h"
#include
#include

void framebuffer_size_callback(GLFWwindow* window, int width, int height);
void processInput(GLFWwindow* window);

GLuint vPosition;
GLuint fColor;
GLuint transformationAttrib;
GLuint projectionAttrib;

// settings
const unsigned int SCR_WIDTH = 1366;//800;1366
const unsigned int SCR_HEIGHT = 768;// 600; 768

Sphere sphere1(0.5f);
Sphere sphere2(0.5f);

GLuint vbo1;
GLuint ibo1;
GLuint vbo2;
GLuint ibo2;

#define BUFFER_OFFSET(offset) ((void*)(offset))

int Index = 0;

void init(void) {

glGenBuffers(1, &vbo1);
glBindBuffer(GL_ARRAY_BUFFER, vbo1);
glBufferData(GL_ARRAY_BUFFER, sphere1.getInterleavedVertexSize(), sphere1.getInterleavedVertices(), GL_STATIC_DRAW);

glGenBuffers(1, &ibo1);
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, ibo1);
glBufferData(GL_ELEMENT_ARRAY_BUFFER, sphere1.getIndexSize(), sphere1.getIndices(), GL_STATIC_DRAW);

glGenBuffers(1, &vbo2);
glBindBuffer(GL_ARRAY_BUFFER, vbo2);
glBufferData(GL_ARRAY_BUFFER, sphere2.getInterleavedVertexSize(), sphere2.getInterleavedVertices(), GL_STATIC_DRAW);

glGenBuffers(1, &ibo2);
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, ibo2);
glBufferData(GL_ELEMENT_ARRAY_BUFFER, sphere2.getIndexSize(), sphere2.getIndices(), GL_STATIC_DRAW);

GLuint program = InitShader("vshader.glsl", "fshader.glsl");
glUseProgram(program);

vPosition = glGetAttribLocation(program, "vPosition");

transformationAttrib = glGetUniformLocation(program, "trans");
projectionAttrib = glGetUniformLocation(program, "Projection");
fColor = glGetUniformLocation(program, "color");

glEnable(GL_DEPTH_TEST);
glClearColor(1.0, 0.0, 0.0, 1.0);

}

int main()
{
std::cout

Подробнее здесь: https://stackoverflow.com/questions/798 ... -to-render
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»