Как включить в несколько заголовочных файлов на C++?C++

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

Сообщение Anonymous »

У меня есть проект на C++, использующий opengl. У меня есть main.cpp, который работает с инициализацией openGL, создает окно и тому подобное.
Я хотел бы создать класс, в котором я мог бы передать на аутсорсинг загрузку некоторой текстуры в шейдер.
Но когда я пытаюсь использовать Заголовки Shader.h или Glad.h, включенные в любые другие заголовки классов, я получил ошибку:

фатальная ошибка C1189: #error: заголовок OpenGL уже включен , удалите
это включение, рад, что оно уже есть

Если я выполняю всю логику внутри main.cpp, все в порядке, проблема возникает только при попытке использовать функции openGL где угодно, кроме main.cpp
main.cpp:
#include // generated from https://glad.dav1d.de
#include "shader.h"

int main()
{
... //Do OpenGL Staff
}

shader.h:
#ifndef SHADER_H
#define SHADER_H

#include
#include

class Shader
{
public:
unsigned int ID;
...//some Shader definition staff
}
#endif

и теперь я хочу, чтобы внешний класс «Maze.h» загружал свою карту внутри текстуры opengl, что-то вроде этого:
class Maze
{
public:
...//some maze-relate staff
void LoadMazeToGL(Shader* shader)
{
// load and create a texture
// -------------------------
glGenTextures(1, &screenTex1);
glBindTexture(GL_TEXTURE_1D, screenTex1);
// set the texture wrapping parameters
glTexParameteri(GL_TEXTURE_1D, GL_TEXTURE_WRAP_S, GL_REPEAT); // set texture wrapping to GL_REPEAT (default wrapping method)
glTexParameteri(GL_TEXTURE_1D, GL_TEXTURE_WRAP_T, GL_REPEAT);
// set texture filtering parameters
glTexParameteri(GL_TEXTURE_1D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_1D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);

GLint curMapId = glGetUniformLocation(shader->ID, "shaderInternalVarName");
glUniform1i(curMapId, 2); // Texture unit 2 is for current map.

... //define and fill tex1data using Maze private information

glActiveTexture(GL_TEXTURE0 + 2);
glBindTexture(GL_TEXTURE_1D, screenTex1);
glTexImage1D(GL_TEXTURE_1D, 0, GL_RGBA, MazeIntegerSize, 0, GL_RGBA, GL_UNSIGNED_BYTE, tex1data);

}
}


Подробнее здесь: https://stackoverflow.com/questions/658 ... files-in-c
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Фатальная ошибка: Glad/glad.h: такого файла или каталога нет (каталог существует).
    Anonymous » » в форуме C++
    0 Ответы
    43 Просмотры
    Последнее сообщение Anonymous
  • : такого файла или каталога нет.
    Anonymous » » в форуме C++
    0 Ответы
    24 Просмотры
    Последнее сообщение Anonymous
  • Инициализация GLAD для нескольких dll, использующих GLAD
    Anonymous » » в форуме C++
    0 Ответы
    19 Просмотры
    Последнее сообщение Anonymous
  • Инициализация GLAD для нескольких dll, использующих GLAD
    Anonymous » » в форуме C++
    0 Ответы
    24 Просмотры
    Последнее сообщение Anonymous
  • Opengl "нет такого файла или каталога" Glad/Glad.h [Duplicate]
    Anonymous » » в форуме C++
    0 Ответы
    10 Просмотры
    Последнее сообщение Anonymous

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