我正在为网格数据创建一个可绘制的对象类,并得到这个链接器错误。这也是在处理一个Qt教程中使用的网格绘图的另一个类之上的。我还使用一个QGLWidget作为我要绘制的表面。以下是头文件查找第一类的内容。
#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_HG:\Dropbox\GLSLDemo\globject.cpp:60: error:'glGenBuffers‘没有在这个作用域中声明-- glGenBuffers(2,vboIds);以及其他gl调用的相同错误。一开始,我使用了GeometryEngine中的所有代码。当时我没有范围问题。如果initilizeOpenGLFunctions()相关,则在GeometryEngine的init()中调用。^
发布于 2014-03-02 17:01:14
QT OpenGL很奇怪。我认为QOpenGLFunctions维护了一个共同的上下文。而且,我不擅长C++,而且使用保护错误。
https://stackoverflow.com/questions/21838097
复制相似问题