Я выполняю задание по солнечной системе. Я продолжаю сталкиваться с одной и той же проблемой: что бы я ни делал, я не могу отобразить необходимые сферы. Например, я должен визуализировать сферу земли и солнца, но сфера вообще не отображается.
Мой код выглядит следующим образом:
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