⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 qgl.h

📁 奇趣公司比较新的qt/emd版本
💻 H
字号:
/******************************************************************************** Copyright (C) 1992-2007 Trolltech ASA. All rights reserved.**** This file is part of the QtOpenGL module of the Qt Toolkit.**** This file may be used under the terms of the GNU General Public** License version 2.0 as published by the Free Software Foundation** and appearing in the file LICENSE.GPL included in the packaging of** this file.  Please review the following information to ensure GNU** General Public Licensing requirements will be met:** http://trolltech.com/products/qt/licenses/licensing/opensource/**** If you are unsure which license is appropriate for your use, please** review the following information:** http://trolltech.com/products/qt/licenses/licensing/licensingoverview** or contact the sales department at sales@trolltech.com.**** In addition, as a special exception, Trolltech gives you certain** additional rights. These rights are described in the Trolltech GPL** Exception version 1.0, which can be found at** http://www.trolltech.com/products/qt/gplexception/ and in the file** GPL_EXCEPTION.txt in this package.**** In addition, as a special exception, Trolltech, as the sole copyright** holder for Qt Designer, grants users of the Qt/Eclipse Integration** plug-in the right for the Qt/Eclipse Integration to link to** functionality provided by Qt Designer and its related libraries.**** Trolltech reserves all rights not expressly granted herein.**** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.******************************************************************************/#ifndef QGL_H#define QGL_H#include <QtGui/qwidget.h>#include <QtOpenGL/qglcolormap.h>#include <QtCore/qmap.h>QT_BEGIN_HEADERQT_MODULE(OpenGL)#ifdef QT3_SUPPORT#define QGL_VERSION        460#define QGL_VERSION_STR        "4.6"Q_OPENGL_EXPORT inline QT3_SUPPORT const char *qGLVersion() {    return QGL_VERSION_STR;}#endif#if defined(Q_WS_WIN)# include <QtCore/qt_windows.h>#endif#if defined(Q_WS_MAC)# include <OpenGL/gl.h># include <OpenGL/glu.h>#elif defined(Q_WS_QWS)# include <GLES/gl.h>#ifndef GL_DOUBLE# define GL_DOUBLE GL_FLOAT#endif#ifndef GLdoubletypedef GLfloat GLdouble;#endif#else# include <GL/gl.h># ifndef QT_LSB#   include <GL/glu.h># endif#endif#if defined(Q_WS_WIN) || defined(Q_WS_MAC)class QGLCmap;#endifclass QPixmap;#if defined(Q_WS_X11)class QGLOverlayWidget;#endifclass QGLWidgetPrivate;class QGLContextPrivate;// Namespace class:namespace QGL{    enum FormatOption {        DoubleBuffer            = 0x0001,        DepthBuffer             = 0x0002,        Rgba                    = 0x0004,        AlphaChannel            = 0x0008,        AccumBuffer             = 0x0010,        StencilBuffer           = 0x0020,        StereoBuffers           = 0x0040,        DirectRendering         = 0x0080,        HasOverlay              = 0x0100,        SampleBuffers           = 0x0200,        SingleBuffer            = DoubleBuffer    << 16,        NoDepthBuffer           = DepthBuffer     << 16,        ColorIndex              = Rgba            << 16,        NoAlphaChannel          = AlphaChannel    << 16,        NoAccumBuffer           = AccumBuffer     << 16,        NoStencilBuffer         = StencilBuffer   << 16,        NoStereoBuffers         = StereoBuffers   << 16,        IndirectRendering       = DirectRendering << 16,        NoOverlay               = HasOverlay      << 16,        NoSampleBuffers         = SampleBuffers   << 16    };    Q_DECLARE_FLAGS(FormatOptions, FormatOption)}Q_DECLARE_OPERATORS_FOR_FLAGS(QGL::FormatOptions)class QGLFormatPrivate;class Q_OPENGL_EXPORT QGLFormat{public:    QGLFormat();    QGLFormat(QGL::FormatOptions options, int plane = 0);    QGLFormat(const QGLFormat &other);    QGLFormat &operator=(const QGLFormat &other);    ~QGLFormat();    void setDepthBufferSize(int size);    int  depthBufferSize() const;    void setAccumBufferSize(int size);    int  accumBufferSize() const;    void setRedBufferSize(int size);    int  redBufferSize() const;    void setGreenBufferSize(int size);    int  greenBufferSize() const;    void setBlueBufferSize(int size);    int  blueBufferSize() const;    void setAlphaBufferSize(int size);    int  alphaBufferSize() const;    void setStencilBufferSize(int size);    int  stencilBufferSize() const;    void setSampleBuffers(bool enable);    bool sampleBuffers() const;    void setSamples(int numSamples);    int  samples() const;    void setSwapInterval(int interval);    int  swapInterval() const;    bool doubleBuffer() const;    void setDoubleBuffer(bool enable);    bool depth() const;    void setDepth(bool enable);    bool rgba() const;    void setRgba(bool enable);    bool alpha() const;    void setAlpha(bool enable);    bool accum() const;    void setAccum(bool enable);    bool stencil() const;    void setStencil(bool enable);    bool stereo() const;    void setStereo(bool enable);    bool directRendering() const;    void setDirectRendering(bool enable);    bool hasOverlay() const;    void setOverlay(bool enable);    int plane() const;    void setPlane(int plane);    void setOption(QGL::FormatOptions opt);    bool testOption(QGL::FormatOptions opt) const;    static QGLFormat defaultFormat();    static void setDefaultFormat(const QGLFormat& f);    static QGLFormat defaultOverlayFormat();    static void setDefaultOverlayFormat(const QGLFormat& f);    static bool hasOpenGL();    static bool hasOpenGLOverlays();    enum  OpenGLVersionFlag {        OpenGL_Version_None               = 0x00000000,        OpenGL_Version_1_1                = 0x00000001,        OpenGL_Version_1_2                = 0x00000002,        OpenGL_Version_1_3                = 0x00000004,        OpenGL_Version_1_4                = 0x00000008,        OpenGL_Version_1_5                = 0x00000010,        OpenGL_Version_2_0                = 0x00000020,        OpenGL_Version_2_1                = 0x00000040,        OpenGL_ES_Common_Version_1_0      = 0x00000080,        OpenGL_ES_CommonLite_Version_1_0  = 0x00000100,        OpenGL_ES_Common_Version_1_1      = 0x00000200,        OpenGL_ES_CommonLite_Version_1_1  = 0x00000400,        OpenGL_ES_Version_2_0             = 0x00000800    };    Q_DECLARE_FLAGS(OpenGLVersionFlags, OpenGLVersionFlag)    static OpenGLVersionFlags openGLVersionFlags();private:    QGLFormatPrivate *d;    friend Q_OPENGL_EXPORT bool operator==(const QGLFormat&, const QGLFormat&);    friend Q_OPENGL_EXPORT bool operator!=(const QGLFormat&, const QGLFormat&);};Q_DECLARE_OPERATORS_FOR_FLAGS(QGLFormat::OpenGLVersionFlags)Q_OPENGL_EXPORT bool operator==(const QGLFormat&, const QGLFormat&);Q_OPENGL_EXPORT bool operator!=(const QGLFormat&, const QGLFormat&);class Q_OPENGL_EXPORT QGLContext{    Q_DECLARE_PRIVATE(QGLContext)public:    QGLContext(const QGLFormat& format, QPaintDevice* device);    QGLContext(const QGLFormat& format);    virtual ~QGLContext();    virtual bool create(const QGLContext* shareContext = 0);    bool isValid() const;    bool isSharing() const;    void reset();    // ### Qt 5: make format() return a const ref instead    QGLFormat format() const;    QGLFormat requestedFormat() const;    void setFormat(const QGLFormat& format);    // ### Qt 5: return bools + maybe remove virtuals    virtual void makeCurrent();    virtual void doneCurrent();    virtual void swapBuffers() const;    GLuint bindTexture(const QImage &image, GLenum target = GL_TEXTURE_2D,                       GLint format = GL_RGBA);    GLuint bindTexture(const QPixmap &pixmap, GLenum target = GL_TEXTURE_2D,                       GLint format = GL_RGBA);    GLuint bindTexture(const QString &fileName);    void deleteTexture(GLuint tx_id);    static void setTextureCacheLimit(int size);    static int textureCacheLimit();    void *getProcAddress(const QString &proc) const;    QPaintDevice* device() const;    QColor overlayTransparentColor() const;    static const QGLContext* currentContext();protected:    virtual bool chooseContext(const QGLContext* shareContext = 0);#if defined(Q_WS_WIN)    virtual int choosePixelFormat(void* pfd, HDC pdc);#endif#if defined(Q_WS_X11)    virtual void* tryVisual(const QGLFormat& f, int bufDepth = 1);    virtual void* chooseVisual();#endif#if defined(Q_WS_MAC)    virtual void* chooseMacVisual(GDHandle);#endif    bool deviceIsPixmap() const;    bool windowCreated() const;    void setWindowCreated(bool on);    bool initialized() const;    void setInitialized(bool on);    void generateFontDisplayLists(const QFont & fnt, int listBase); // ### Qt 5: remove    uint colorIndex(const QColor& c) const;    void setValid(bool valid);    void setDevice(QPaintDevice *pDev);protected:    static QGLContext* currentCtx;private:    QGLContextPrivate* d_ptr;    friend class QGLPixelBuffer;    friend class QGLPixelBufferPrivate;    friend class QGLWidget;    friend class QGLDrawable;    friend class QGLWidgetPrivate;    friend class QGLGlyphCache;    friend class QOpenGLPaintEngine;    friend class QOpenGLPaintEnginePrivate;#ifdef Q_WS_MAC    friend class QMacGLWindowChangeEvent;    void updatePaintDevice();#endif#ifdef Q_WS_WIN    friend class QGLFramebufferObject;    friend class QGLFramebufferObjectPrivate;    friend QGLContextPrivate *qt_glctx_get_dptr(QGLContext *);    friend bool qt_resolve_GLSL_functions(QGLContext *ctx);    friend bool qt_createGLSLProgram(QGLContext *ctx, GLuint &program, const char *shader_src, GLuint &shader);#endifprivate:    Q_DISABLE_COPY(QGLContext)};class Q_OPENGL_EXPORT QGLWidget : public QWidget{    Q_OBJECT    Q_DECLARE_PRIVATE(QGLWidget)public:    explicit QGLWidget(QWidget* parent=0,                       const QGLWidget* shareWidget = 0, Qt::WindowFlags f=0);    explicit QGLWidget(QGLContext *context, QWidget* parent=0,                       const QGLWidget* shareWidget = 0, Qt::WindowFlags f=0);    explicit QGLWidget(const QGLFormat& format, QWidget* parent=0,                       const QGLWidget* shareWidget = 0, Qt::WindowFlags f=0);#ifdef QT3_SUPPORT    QT3_SUPPORT_CONSTRUCTOR QGLWidget(QWidget* parent, const char* name,                                    const QGLWidget* shareWidget = 0, Qt::WindowFlags f=0);    QT3_SUPPORT_CONSTRUCTOR QGLWidget(QGLContext *context, QWidget* parent, const char* name,                                    const QGLWidget* shareWidget = 0, Qt::WindowFlags f=0);    QT3_SUPPORT_CONSTRUCTOR QGLWidget(const QGLFormat& format, QWidget* parent, const char* name,                                    const QGLWidget* shareWidget = 0, Qt::WindowFlags f=0);#endif    ~QGLWidget();    void qglColor(const QColor& c) const;    void qglClearColor(const QColor& c) const;    bool isValid() const;    bool isSharing() const;    // ### Qt 5: return bools    void makeCurrent();    void doneCurrent();    bool doubleBuffer() const;    void swapBuffers();    // ### Qt 5: make format() return a const ref instead    QGLFormat format() const;    void setFormat(const QGLFormat& format);    const QGLContext* context() const;    void setContext(QGLContext* context, const QGLContext* shareContext = 0,                    bool deleteOldContext = true);    QPixmap renderPixmap(int w = 0, int h = 0, bool useContext = false);    QImage grabFrameBuffer(bool withAlpha = false);    void makeOverlayCurrent();    const QGLContext* overlayContext() const;    static QImage convertToGLFormat(const QImage& img);    void setMouseTracking(bool enable);    const QGLColormap & colormap() const;    void  setColormap(const QGLColormap & map);    void renderText(int x, int y, const QString & str,                     const QFont & fnt = QFont(), int listBase = 2000);    void renderText(double x, double y, double z, const QString & str,                     const QFont & fnt = QFont(), int listBase = 2000);    QPaintEngine *paintEngine() const;    GLuint bindTexture(const QImage &image, GLenum target = GL_TEXTURE_2D,                       GLint format = GL_RGBA);    GLuint bindTexture(const QPixmap &pixmap, GLenum target = GL_TEXTURE_2D,                       GLint format = GL_RGBA);    GLuint bindTexture(const QString &fileName);    void deleteTexture(GLuint tx_id);public Q_SLOTS:    virtual void updateGL();    virtual void updateOverlayGL();protected:    bool event(QEvent *);    virtual void initializeGL();    virtual void resizeGL(int w, int h);    virtual void paintGL();    virtual void initializeOverlayGL();    virtual void resizeOverlayGL(int w, int h);    virtual void paintOverlayGL();    void setAutoBufferSwap(bool on);    bool autoBufferSwap() const;    void paintEvent(QPaintEvent*);    void resizeEvent(QResizeEvent*);    virtual void glInit();    virtual void glDraw();    int fontDisplayListBase(const QFont & fnt, int listBase = 2000); // ### Qt 5: removeprivate:    Q_DISABLE_COPY(QGLWidget)#ifdef Q_WS_MAC    friend class QMacGLWindowChangeEvent;#endif    friend class QGLDrawable;    friend class QGLPixelBuffer;    friend class QGLPixelBufferPrivate;    friend class QGLContext;    friend class QGLOverlayWidget;    friend class QOpenGLPaintEngine;};//// QGLFormat inline functions//inline bool QGLFormat::doubleBuffer() const{    return testOption(QGL::DoubleBuffer);}inline bool QGLFormat::depth() const{    return testOption(QGL::DepthBuffer);}inline bool QGLFormat::rgba() const{    return testOption(QGL::Rgba);}inline bool QGLFormat::alpha() const{    return testOption(QGL::AlphaChannel);}inline bool QGLFormat::accum() const{    return testOption(QGL::AccumBuffer);}inline bool QGLFormat::stencil() const{    return testOption(QGL::StencilBuffer);}inline bool QGLFormat::stereo() const{    return testOption(QGL::StereoBuffers);}inline bool QGLFormat::directRendering() const{    return testOption(QGL::DirectRendering);}inline bool QGLFormat::hasOverlay() const{    return testOption(QGL::HasOverlay);}inline bool QGLFormat::sampleBuffers() const{    return testOption(QGL::SampleBuffers);}QT_END_HEADER#endif // QGL_H

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -