gpt4 book ai didi

c++ - 在 Qt 中包含 OpenGL 库

转载 作者:太空宇宙 更新时间:2023-11-04 13:53:45 25 4
gpt4 key购买 nike

我在 QT 项目中使用 OpenGL。我现在正在尝试最基本的例子。 http://programanddesign.com/cpp/qt-opengl-code-example/

GLWidget.hpp

#ifndef _GLWIDGET_H
#define _GLWIDGET_H

#include <QtOpenGL/QGLWidget>

class GLWidget : public QGLWidget {

Q_OBJECT // must include this if you use Qt signals/slots

public:
GLWidget(QWidget *parent = NULL);

protected:
void initializeGL();
void resizeGL(int w, int h);
void paintGL();
void mousePressEvent(QMouseEvent *event);
void mouseMoveEvent(QMouseEvent *event);
void keyPressEvent(QKeyEvent *event);
};

#endif /* _GLWIDGET_H */

GLWidget.cpp

#include <QtGui/QMouseEvent>
#include "GLWidget.h"

GLWidget::GLWidget(QWidget *parent) : QGLWidget(parent) {
setMouseTracking(true);
}

void GLWidget::initializeGL() {
glDisable(GL_TEXTURE_2D);
glDisable(GL_DEPTH_TEST);
glDisable(GL_COLOR_MATERIAL);
glEnable(GL_BLEND);
glEnable(GL_POLYGON_SMOOTH);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glClearColor(0, 0, 0, 0);
}

void GLWidget::resizeGL(int w, int h) {
glViewport(0, 0, w, h);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluOrtho2D(0, w, 0, h); // set origin to bottom left corner
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
}

void GLWidget::paintGL() {
glClear(GL_COLOR_BUFFER_BIT);
glColor3f(1,0,0);
glBegin(GL_POLYGON);
glVertex2f(0,0);
glVertex2f(100,500);
glVertex2f(500,100);
glEnd();
}

void GLWidget::mousePressEvent(QMouseEvent *event) {

}
void GLWidget::mouseMoveEvent(QMouseEvent *event) {
printf("%d, %d\n", event->x(), event->y());
}

void GLWidget::keyPressEvent(QKeyEvent* event) {
switch(event->key()) {
case Qt::Key_Escape:
close();
break;
default:
event->ignore();
break;
}
}

但是GL_COLOR_MATERIAL,GL_POLYGON_SMOOTH,glColor3f,glBegin,GL_POLYGON,glVertex2f,glEnd无法识别。有人可以告诉我如何解决这个问题吗?

最佳答案

您需要按如下方式添加 Qt OpenGL 头文件:

#include <QtOpenGL>

根据您使用的 OpenGL 函数,您可能还需要让 GLWidget 类继承自 QGLFunctions:http://qt-project.org/doc/qt-4.8/qglfunctions.html .

关于c++ - 在 Qt 中包含 OpenGL 库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22468997/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com