Цвета не отображаются с несколькими VBO OpenGL (GL_INVALID_VALUE,GL_INVALID_OPERATION) [закрыто]C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Цвета не отображаются с несколькими VBO OpenGL (GL_INVALID_VALUE,GL_INVALID_OPERATION) [закрыто]

Сообщение Anonymous »

Мне не удалось устранить некорректное отображение цветов на объектах-шарах. (Обратите внимание: это проект - некоторая реализация может быть странной из-за ограничений). Меня устраивает положение вершин, но мне трудно передать какое-либо значение цвета во фрагментный шейдер.
Вот соответствующий код:
Измените, чтобы добавить полный пример кода
GLheader.h
/*
* This is to avoid linker errors that were occurring
*/
#pragma once

#define GLEW_STATIC 1 // This allows linking with Static Library on Windows, without DLL
#include // Include GLEW - OpenGL Extension Wrangler

#include

#include
#include "glm/ext.hpp" //to use string_cast
#include
#include "glm/gtx/string_cast.hpp" //glm::to_string()
#include

фрагменты классов шейдеров
#include
#include
#include
#include
#include

namespace fs = std::filesystem;

void Shader::compileAndLink(const std::string& vertexShaderFile, const std::string& fragmentShaderFile) {
/*
* compile and link shader program
* assign shader program id to this->ID
*/

//vertex shader
int vertexShader = glCreateShader(GL_VERTEX_SHADER);
std::string vertSource = getShaderSource(vertexShaderFile);
const char* vs = vertSource.c_str();
glShaderSource(vertexShader, 1, &vs, NULL);
glCompileShader(vertexShader);

// check for shader compile errors
checkCompileErrors(vertexShader, "VERTEX");

// fragment shader
int fragmentShader = glCreateShader(GL_FRAGMENT_SHADER);
std::string fragSource = getShaderSource(fragmentShaderFile);
const char* fs = fragSource.c_str();
glShaderSource(fragmentShader, 1, &fs, NULL);
glCompileShader(fragmentShader);

// check for shader compile errors
checkCompileErrors(fragmentShader, "FRAGMENT");

// link shaders
this->ID = glCreateProgram();
glAttachShader(this->ID, vertexShader);
glAttachShader(this->ID, fragmentShader);
glLinkProgram(this->ID);

// check for linking errors
checkCompileErrors(this->ID, "PROGRAM");

// delete the shaders as they're linked into our program now and no longer necessary
glDeleteShader(vertexShader);
glDeleteShader(fragmentShader);
}
void Shader::checkCompileErrors(unsigned int shader, const std::string& type){
int success;
char infoLog[1024];
if (type != "PROGRAM")
{
glGetShaderiv(shader, GL_COMPILE_STATUS, &success);
if (!success)
{
glGetShaderInfoLog(shader, 1024, NULL, infoLog);
std::cout

Подробнее здесь: https://stackoverflow.com/questions/791 ... invalid-op
Ответить

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

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

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

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

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