Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Qt 是否未声明glBegin?_Qt_Opengl - Fatal编程技术网

Qt 是否未声明glBegin?

Qt 是否未声明glBegin?,qt,opengl,Qt,Opengl,我按照一个教程在qt中编写opengl的一小段代码 但是在6:13,当我把代码涂成蓝色时,它显示了几个错误 我真正不明白的是,当我只放置glClear(GL\u COLOR\u BUFFER\u位)时,它可以正常构建,但即使我只放置glColor3f(),也会发生错误。GLWidget是否不支持glColor*()或glBegin()命令 这是我的密码 testopgl.pro #------------------------------------------------- # # P

我按照一个教程在qt中编写opengl的一小段代码

但是在6:13,当我把代码涂成蓝色时,它显示了几个错误

我真正不明白的是,当我只放置glClear(GL\u COLOR\u BUFFER\u位)时,它可以正常构建,但即使我只放置glColor3f(),也会发生错误。GLWidget是否不支持glColor*()或glBegin()命令

这是我的密码

testopgl.pro

#-------------------------------------------------
#
# Project created by QtCreator 2013-03-28T09:48:44
#
#-------------------------------------------------

QT       += core gui opengl

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

TARGET = testopgl
TEMPLATE = app


SOURCES += main.cpp\
        mainwindow.cpp \
    glwidget.cpp

HEADERS  += mainwindow.h \
    glwidget.h

FORMS    += mainwindow.ui
glwidget.h

#ifndef GLWIDGET_H
#define GLWIDGET_H

#include <QGLWidget>

class GLWidget : public QGLWidget
{
    Q_OBJECT
public:
    explicit GLWidget(QWidget *parent = 0);

    void initializeGL();
    void paintGL();
    void resizeGL(int w,int h);
};

#endif // GLWIDGET_H

您提到的函数在任何现代版本的GL中都不存在,因此您所遵循的教程听起来似乎已经过时了


因此,通过构建QT公开的GL版本可能没有这些功能。也许可以重新配置/重建QT以使用较旧版本的GL,但我建议您了解并使用现代可编程接口。

谢谢JasonD。我找到了另一个教程,它也和您说的一样。
#ifndef GLWIDGET_H
#define GLWIDGET_H

#include <QGLWidget>

class GLWidget : public QGLWidget
{
    Q_OBJECT
public:
    explicit GLWidget(QWidget *parent = 0);

    void initializeGL();
    void paintGL();
    void resizeGL(int w,int h);
};

#endif // GLWIDGET_H
#include "glwidget.h"


GLWidget::GLWidget(QWidget *parent) :
    QGLWidget(parent)
{
}

void GLWidget::initializeGL(){
    glClearColor(1,1,0,1);
}

void GLWidget::paintGL(){
    glClear(GL_COLOR_BUFFER_BIT);


    glColor3f(1,0,0);

    glBegin(GL_TRIANGLES);
        glVertex3f(-0.5,-0.5,0);
        glVertex3f(0.5,-0.5,0);
        glVertex3f(0.0,0.5,0);
    glEnd();


}

void GLWidget::resizeGL(int w,int h){

}