久久精品国产亚洲av成人久久,丰满成熟女人被舔胸,一区二区三区极品av,伊人久久综合亚洲精品,91porn性教育一区二区三区,奇米影视8888久久精品,狠狠久久蜜臀婷色中文网,久久999精品久久久久久,久久99精品久久久久久不卡

您好,歡迎來到河北厚宏金屬絲網制品有限公司!

免費咨詢熱線:18632860991 同微信

熱門關鍵詞:聲屏障

聯系我們

河北厚宏金屬絲網制品有限公司

聯系人:張經理

電話:0318-8880555

手機:18632860991 同微信

地址:衡水市安平縣工業區

沖孔板網加工沖孔廠

文章來源:發表時間:2020-07-24 14:32:42
分享到:

沖孔板網加工沖孔廠關鍵詞:三角形沖孔網 標題:OpenGL + Qt: 0 - 三角形繪制 來源:知乎 文章內容: 今天開一個大坑,我將寫一系列關于 OpenGL + Qt 編程的入門教程,內容包括 OpenGL 的 Shading Language (現代 OpenGL,9102年都要結束了,不要再用glBegin/glEnd啦!)以及如何通過 Qt 做用戶沖孔板網加工沖孔廠交互來配合OpenGL。雖然 OpenGL 和 Qt 的中文教程、文檔、資源都是很豐富的,但是使用 Qt 寫 OpenGL 程序卻幾乎沒有,甚至連英文文檔都相當少,這個系列算是我自己試錯的一些經驗總結,給有興趣的小伙伴看看。 本系列不假設讀者有任何 OpenGL 或者 Qt 或者圖形學的基礎知識,但是要求讀者了解基本的 C++ 語法。所有相關的圖形學、Qt、OpenGL 的內容都會單獨介紹。 為什么用 Qt 寫 OpenGL OpenGL 本身雖然是一個圖形庫,但是它只負責產生絢麗的圖形效果,并不管理用戶界面本身,也不與操作系統打交道接受用戶的輸入,而是依靠其他圖形界面庫的幫助。 目前能找到的 OpenGL 教程大部分是使用一些為 OpenGL 打造的工具庫(如 GLUT、glfw 這些),這些庫雖然對于發揮 OpenGL 本身的特性都很方便,但是在如果要搭建完整的應用,卻十分捉襟見肘。另一方面在 Windows 上安裝這些工具庫都異常復雜,需要用 CMake + Visual Studio 沖孔板網加工沖孔廠一頓操作,往往安裝就把人嚇退了,而 Linux 又會因為顯卡驅動的問題,做這種和顯卡高度相關的事情會很麻煩。 而 Qt 作為**成熟的跨平臺 GUI 庫之一,有大量的子模塊完成各種交互、多媒體處理、網絡等等完整應用所必須的功能,而且其開發的程序幾乎可以無縫在不同的操作系統上運行,也有非常簡單的安裝程序和完善的文檔。對于開發 OpenGL 程序來說更重要的是,從 Qt 5 開始,OpenGL 不再是單獨的模塊,而是融入了 Qt 核心包中,在 qmake 的加持下,幾乎無需額外配置就能使用。如果使用 Qt 專用的 IDE QtCre沖孔板網加工沖孔廠ator,可以一鍵編譯運行,極大提高開發體驗。 話不多說,我們從**基本的繪圖開始吧!本節所有代碼公開于Github上,鏈接linmx0130/QGLDemo。 搭建腳手架 首先強烈推薦去 Qt 主頁下載**新版的 Qt 工具包,由于只是學習目的,我們可以在安裝的時候直接選擇以開源協議安裝。**后因為 Qt 使用了 LGPL 協議,所以如果只是動態鏈接也可以在商業程序中使用 Qt。 安裝好完整的 Qt 開發環境后,我們直接打開 Qt Creator,選擇創建一個Qt Widgets Application,這是**基本**傳統的基于 C++ 的 Qt 程序。 然后會要求選擇創建項目路徑和名稱、選擇的工具鏈等等,這些都可以隨意選擇,但是在接下來 Details 項中,要十分小心,我們需要去掉“創建界面”的勾選,這樣就不會生成界面文件,可以完全由代碼操控界面。 然后一個基本的 Qt GUI 工程就搭建完成了,是時候開始繪圖了! QWidget 和 QOpenGLWidget 在開始編程之前,我們先需要搞清楚 QWidget 和 QOpenGLWidget 這兩個類。在 Qt 中,一切用戶界面中的對象,不論是窗口、輸入框、按鈕還是其他各種控件,都是 QWidget 的子類。有些 QWidget 可以承載其他 QWidget,并通過各種 Layout 管理子組件的排放,從而構成豐富且有序的界面。一般而言,如果我們需要設計一個窗口或者自己的小控件,就需要繼承 QWidget 類并填充其他控件或者直接繪圖。 QWidget 是一個 QObject,這是 Qt 自建的一種 C++ 語法擴展,不僅僅有基本的成員變量和成員函數,還有信號(signal)和槽(slot),在 Qt 中,一些事件發生后會產生信號,而連接到這個信號上的槽函數則會被調用用于處理這個信號。我們自己設計的控件也可以觸發信號,從而讓控件的使用者接收并處理這些信號。但是在這一節中我們不會遇到它們。 不過本節我們會繼承 QOpenGLWidget 類。它是 QWidget 的子類,并且攜帶了調用 OpenGL 所必須的一些函數和對象,也給出了幾個用于重載的方法便于繪圖,因此我們直接使用它來完成基本的繪圖操作。 繼承QOpenGLWidget 在這一篇中我們只寫一個 QOpenGLWidget 來繪圖,然后放置到默認生成的主窗口 MainWindow 中展示,所以首先我們需要繼承 QOpenGLWidget 來進行繪圖。我們可以直接用 Qt Creator 添加一個新類,起名為 PaintingWidget 這樣會自動生成好頭文件和實現文件,生成的時候直接選擇以 QOpenGLWidget 為基類。在頭文件中我們進行如下聲明: #include #include #include #include #include #include class PaintingWidget : public QOpenGLWidget { Q_OBJECT public: PaintingWidget(QWidget *partent); ~PaintingWidget(); protected: void initializeGL(); void paintGL(); void resizeGL(int w, int h); private: QOpenGLBuffer *m_vbo; // 存儲點數據 QOpenGLVertexArrayObject *m_vao; // VAO對象 QOpenGLShaderProgram *m_shader; // 渲染器程序對象 }; 這里我們需要注意幾點 我們重載了三個方法:initializeGL(),paintGL()和 resizeGL()。這三個方法都是來自QOpenGLWidget 的,在 initializeGL() 中我們需要進行初始化,這個方法在沖孔板網加工沖孔廠 Widget 剛加載時被調用。而在 paintGL() 中進行繪圖,每一次繪圖請求產生,都會進行一次繪圖。**后 resizeGL() 是用于處理窗口大小變化的情況,這個我們會在以后討論。 我們定義了三個成員變量:m_vbo , m_vao, m_shader。VBO 是指 Vertex Buffer Object,顧名思義就是存放頂點的緩沖區,所有頂點的數據會存入這個對象,交給OpenGL進行繪圖。VAO 則是用于管理多個 VBO 的。**后用一個渲染器對象管理渲染器程序。這些對象都是 OpenGL 中設計的,而Qt進行了封裝,并提供了一些更方便使用的方法。其詳細的概念沖孔板網加工沖孔廠可以在其他介紹 OpenGL 編程的教程中找到。 構造函數需要接受一個 QWidget 對象為參數,作為圖形顯示中的父節點,這是所有 QWidget 中都需要的。我們只需要把它傳遞給父類的構造函數就可以了。 在生成的 paintingwidget.cpp 中我們首先定義**簡單的構造函數和析構函數,把那些 OpenGL 的對象的指針初始化為空。 #include "paintingwidget.h" Painting沖孔板網加工沖孔廠

熱門標簽:
下一篇:沖孔板網廠 上一篇:沖孔板網加工沖孔

相關新聞