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