Мне не удалось устранить некорректное отображение цветов на объектах-шарах. (Обратите внимание: это проект - некоторая реализация может быть странной из-за ограничений). Меня устраивает положение вершин, но мне трудно передать какое-либо значение цвета во фрагментный шейдер.
Вот соответствующий код:
Измените, чтобы добавить полный пример кода
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 ... value-gl-i
Цвета не отображаются должным образом при использовании нескольких VBO OpenGL (GL_INVALID_VALUE,GL_INVALID_OPERATION) [з ⇐ C++
Программы на C++. Форум разработчиков
1730066731
Anonymous
Мне не удалось устранить некорректное отображение цветов на объектах-шарах. (Обратите внимание: это проект - некоторая реализация может быть странной из-за ограничений). Меня устраивает положение вершин, но мне трудно передать какое-либо значение цвета во фрагментный шейдер.
Вот соответствующий код:
[b]Измените, чтобы добавить полный пример кода[/b]
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
Подробнее здесь: [url]https://stackoverflow.com/questions/79124018/colours-not-displaying-properly-with-opengl-multiple-vbos-gl-invalid-value-gl-i[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия