메쉬 데이터 용 일종의 drawable 객체 클래스를 만들고 있는데이 링커 오류가 발생합니다. 이것은 Qt 튜토리얼 중 하나에서 사용 된 메쉬 드로잉을 처리하는 또 다른 클래스 위에 있습니다. 또한 드로잉 할 표면에 QGLWidget을 사용하고 있습니다. 헤더 파일이 첫 번째 클래스를 찾는 이유는 다음과 같습니다.Qt QOpenGLFunctions이 범위에서 선언되지 않았습니다.
#ifndef GLOBJECT_H
#define GLOBJECT_H
#include <QOpenGLFunctions>
#include <QOpenGLShaderProgram>
#include <QVector3D>
#include <QVector2D>
#include <QDebug>
#include <QFile>
struct VertexData
{
QVector3D position;
QVector2D texCoord;
QVector3D normal;
};
class GLObject
{
public:
GLObject();
VertexData *data;
GLushort *indices;
GLuint vboIds[2];
int faceCount, vertCount;
bool generateFromPLY(QString filename);
};
#endif // GLOBJECT_H
다음은 다른 클래스의 헤더입니다.
#ifndef GEOMETRYENGINE_H
#define GEOMETRYENGINE_H
#include <QObject>
#include <QOpenGLFunctions>
#include <QOpenGLShaderProgram>
#include <QVector2D>
#include <QVector3D>
#include <QFile>
#include <QDebug>
#include <QVector>
#include <globject.h>
class GeometryEngine : public QObject, protected QOpenGLFunctions
{
Q_OBJECT
public:
GeometryEngine();
~GeometryEngine();
void init();
void drawGeometry(QOpenGLShaderProgram *program);
//void drawCubeGeometry(QOpenGLShaderProgram *program);
bool generateFromPly(QString filename);
QVector<GLObject> drawables;
int drawableId = 0;
};
#endif // GEOMETRYENGINE_H
G : \ 보관 \ GLSLDemo \ globject.cpp : 60 : 오류 'glGenBuffers'가이 범위에서 선언되지 glGenBuffers (2 vboIds); 다른 gl 호출에 대해 동일한 오류가 발생합니다. 처음에는 GeometryEngine의 모든 코드를 시작했습니다. 나는 그때 범위 문제가 없었습니다. initilizeOpenGLFunctions()는 GeometryEngine의 init()에서 호출됩니다. ^
QOpenGLFunctions가 그 이유입니다. 내가 이해하는 것을 상속 한 창/위젯에 GL/ES 2.0 컨텍스트를 소개합니다. 나는이 모든 코드가 작동하도록 만들었지 만 그것을 재구성하여 그렇게 엉망이 아닙니다. 너무 많은 것들을 깨기 전에 내가 백업 한 이후로 나는 다른 작업 코드를 끌어 올릴 수 있었다. 나는 지금 왜이 범위 오류를 내고있는 것일 뿐이 었는지 모르겠다. 헤더 피드백을 주셔서 감사합니다. 나는 아직도 C 프로젝트를 조직하는 법을 배우고있다. – Daykm
globject.cpp : 60에 포함 된 내용이 확실하지만 GeometryEngine 만 QOpenGLFunctions (보호 됨)를 상속하지만 globote.h에는 아무 것도 없습니다. 따라서 globject.cpp에있는 것은 무엇이든 가정합니다 : 60, QOpenGLFunctions에서 상속 한 클래스의 범위에 있지 않습니다. –
GeometryEngine이 protected로 상속 받았기 때문에 다른 클래스는 해당 함수에 액세스 할 수 없습니까? 나는 그것이 합리적이라고 생각한다. globject.cpp : 60 glBindBuffer() 내 생각 엔. 나는 실제로 앞서 갔고 물건을 어느 정도 뒤로 바꿨다. – Daykm