首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在此范围内未声明的Qt QOpenGLFunctions

在此范围内未声明的Qt QOpenGLFunctions
EN

Stack Overflow用户
提问于 2014-02-17 19:51:28
回答 1查看 1.7K关注 0票数 2

我正在为网格数据创建一个可绘制的对象类,并得到这个链接器错误。这也是在处理一个Qt教程中使用的网格绘图的另一个类之上的。我还使用一个QGLWidget作为我要绘制的表面。以下是头文件查找第一类的内容。

代码语言:javascript
复制
#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

这是另一个类的标题。

代码语言:javascript
复制
#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:\Dropbox\GLSLDemo\globject.cpp:60: error:'glGenBuffers‘没有在这个作用域中声明-- glGenBuffers(2,vboIds);以及其他gl调用的相同错误。一开始,我使用了GeometryEngine中的所有代码。当时我没有范围问题。如果initilizeOpenGLFunctions()相关,则在GeometryEngine的init()中调用。^

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-03-02 17:01:14

QT OpenGL很奇怪。我认为QOpenGLFunctions维护了一个共同的上下文。而且,我不擅长C++,而且使用保护错误。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21838097

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档