Сущности не имеют цвета [закрыто] ⇐ C++
-
Anonymous
Сущности не имеют цвета [закрыто]
Я создаю класс Entity и класс Triangle, которые наследуются от класса Entity. Треугольники генерируются, но у них нет цвета.
Ссылка на MRE — https://github.com/pr0s3q/OpenGL_MRE
Это код: Entity.h
#pragma один раз #include класс Сущность { публика: Entity (беззнаковый счетчик, беззнаковый режим); статическая сила CheckShaderCompilation (беззнаковый шейдер); статическая пустота CheckProgramLinking (неподписанная программа); static void CheckOpenGLError(const char* контрольная точка); виртуальная пустота Цвет() = 0; недействительный цикл(); защищено: ~Сущность(); беззнаковый интервал m_count; беззнаковый интервал m_mode; беззнаковый интервал m_VAO; беззнаковый интервал m_VBO; std::vector m_colors; статический const char* m_vertexShaderSource; статический const char* m_fragmentShaderSource; статический беззнаковый int m_fragmentShader; статический беззнаковый int m_vertexShader; статический беззнаковый int m_shaderProgram; }; Entity.cpp
#include #include #include беззнаковый int Entity::m_shaderProgram = 0; const char* Entity::m_vertexShaderSource = nullptr; const char* Entity::m_fragmentShaderSource = nullptr; беззнаковый int Entity::m_fragmentShader = 0; беззнаковое целое Entity::m_vertexShader = 0; Entity::Entity(const unsigned int count, режим const unsigned int) : m_count(счет), m_mode(режим), m_VAO(0), m_VBO(0) { } Сущность::~Entity() { glDeleteVertexArrays (1, &m_VAO); glDeleteBuffers (1, &m_VBO); glDeleteProgram (m_shaderProgram); } пустота Entity::Loop() { glUseProgram (m_shaderProgram); CheckProgramLinking (m_shaderProgram); Цвет(); glBindVertexArray (m_VAO); CheckOpenGLError("Перед розыгрышем"); glDrawArrays(m_mode, 0, m_count); } // Функция проверки статуса компиляции шейдера void Entity::CheckShaderCompilation(const беззнаковый int шейдер) { международный успех; glGetShaderiv (шейдер, GL_COMPILE_STATUS, & успех); если (!успех) { символ infoLog[512]; glGetShaderInfoLog (шейдер, 512, nullptr, infoLog); std::cerr
Я создаю класс Entity и класс Triangle, которые наследуются от класса Entity. Треугольники генерируются, но у них нет цвета.
Ссылка на MRE — https://github.com/pr0s3q/OpenGL_MRE
Это код: Entity.h
#pragma один раз #include класс Сущность { публика: Entity (беззнаковый счетчик, беззнаковый режим); статическая сила CheckShaderCompilation (беззнаковый шейдер); статическая пустота CheckProgramLinking (неподписанная программа); static void CheckOpenGLError(const char* контрольная точка); виртуальная пустота Цвет() = 0; недействительный цикл(); защищено: ~Сущность(); беззнаковый интервал m_count; беззнаковый интервал m_mode; беззнаковый интервал m_VAO; беззнаковый интервал m_VBO; std::vector m_colors; статический const char* m_vertexShaderSource; статический const char* m_fragmentShaderSource; статический беззнаковый int m_fragmentShader; статический беззнаковый int m_vertexShader; статический беззнаковый int m_shaderProgram; }; Entity.cpp
#include #include #include беззнаковый int Entity::m_shaderProgram = 0; const char* Entity::m_vertexShaderSource = nullptr; const char* Entity::m_fragmentShaderSource = nullptr; беззнаковый int Entity::m_fragmentShader = 0; беззнаковое целое Entity::m_vertexShader = 0; Entity::Entity(const unsigned int count, режим const unsigned int) : m_count(счет), m_mode(режим), m_VAO(0), m_VBO(0) { } Сущность::~Entity() { glDeleteVertexArrays (1, &m_VAO); glDeleteBuffers (1, &m_VBO); glDeleteProgram (m_shaderProgram); } пустота Entity::Loop() { glUseProgram (m_shaderProgram); CheckProgramLinking (m_shaderProgram); Цвет(); glBindVertexArray (m_VAO); CheckOpenGLError("Перед розыгрышем"); glDrawArrays(m_mode, 0, m_count); } // Функция проверки статуса компиляции шейдера void Entity::CheckShaderCompilation(const беззнаковый int шейдер) { международный успех; glGetShaderiv (шейдер, GL_COMPILE_STATUS, & успех); если (!успех) { символ infoLog[512]; glGetShaderInfoLog (шейдер, 512, nullptr, infoLog); std::cerr
Мобильная версия