91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C++之openFrameworks框架怎么使用

發布時間:2023-05-05 11:19:30 來源:億速云 閱讀:98 作者:iii 欄目:開發技術

這篇“C++之openFrameworks框架怎么使用”文章的知識點大部分人都不太理解,所以小編給大家總結了以下內容,內容詳細,步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“C++之openFrameworks框架怎么使用”文章吧。

0x00 openFrameworks 介紹

openFrameworks(簡稱 oF)是一個基于C++的開源庫。

它提供了豐富的功能庫和工具,用于快速開發多媒體、交互性和藝術創作相關的應用程序,如藝術裝置、互動藝術、音視頻作品、實時圖形等。oF 的設計目標是讓創意編程變得更加簡單、直觀和靈活,使藝術家、設計師、創意工作者等能夠利用編程進行創作和表達。oF提供了豐富的圖形、音頻、輸入輸出、計算機視覺等功能庫,并支持跨平臺開發,適用于Windows、Mac OSX、Linux等操作系統。oF的社區活躍,有大量的用戶和開發者共享和貢獻了各種擴展、插件和示例代碼。

oF被設計成通用的“膠水”,包括以下常用庫:

  • 圖形:OpenGL、GLEW、GLUT 等

  • 音頻輸入輸出和分析:rtAudio、PortAudio、OpenAL 等

  • 圖像加載和保存:FreeImage

  • 計算機視覺:OpenCV

  • 3D模型加載:Assimp

此外,oF還支持跨平臺。目前支持Windows、Mac OSX、Linux等IDE

  • Visual Studio、Xcode、Eclipse、Code::Blocks

0x01 開啟 oF 之旅

首先,創建基于 oF 的項目需要一個集成開發環境 (IDE) ,比如 Visual Studio (適用于Windows),Xcode(適用于 Mac OSX),大多數 IDE 都具有類似的用戶界面。

Xcode 是蘋果公司開發的集成開發環境 (IDE) :

C++之openFrameworks框架怎么使用

Visual Studio是由微軟公司開發的集成開發環境 (IDE) :

在 Visual Studio 中的構建:

項目視圖區域:提供一種一致的方式來查看構成項目的各個元素。

提供以下三種視圖形式:

  • 類視圖(Class view):允許在C++類級別上查看和操作源代碼。

  • 資源視圖(Resource view):允許查找和編輯應用程序中使用的各種資源,如對話框、圖標、菜單等。

  • 文件視圖(File view):允許查找并瀏覽創建應用程序所需的所有文件。

0x02 oF 文件結構

從 openFrameworks (oF) 的官網 (download | openFrameworks) 下載并解壓縮提供的框架文件,框架文件夾被稱為 oF root 文件夾,oF root 文件夾包含以下多個文件夾:

Apps,Examples,libs ,other,projectGenerator,Addons

C++之openFrameworks框架怎么使用

運行示例:oF 根目錄下的 examples 文件夾包含了許多不同的示例項目,先嘗試運行示例項目。

  • 對于使用 Xcode 的用戶,可以點擊以 .xcodeproj 擴展名結尾的文件來運行項目。

  • 對于使用 Visual Studio (VS) 的用戶,可以點擊以 .sln 擴展名結尾的文件來運行項目。

0x03 圖形基礎

畫筆:為了創建各種形狀的畫筆,首先需要定義圖形的基本構建塊 (BBB)。 2D 圖形函數可以分為兩種類別。 基本形狀 (Basic Shapes): 如線條、矩形、三角形等。 自由形狀 (Freeform Shapes): 如多邊形、路徑等。

在繪制任何形狀之前,需要理解在 oF 中如何確定對象的位置以及如何解釋位置。計算機圖形學通常使用笛卡爾坐標系,但在 oF 中使用了具有以下兩個不同之處的坐標系:

  • 原點 (Origin) 位于左上角

  • C++之openFrameworks框架怎么使用 軸的方向被翻轉

C++之openFrameworks框架怎么使用

 創建一個新項目:

C++之openFrameworks框架怎么使用

創建完新項目后,打開源文件中的 ofAPP.cpp 的 draw() 函數,試試下面的代碼:

ofBackground(0); // 用黑色清空屏幕,0 表示完全白色的灰度顏色。
ofSetColor(255); // 將繪制顏色設置為白色。
 
// 在下面繪制一些圖形。
ofDrawRectangle(50, 50, 100, 100); // 左上角坐標為 (50, 50),寬度為 100,高度為 100。
ofDrawCircle(250, 100, 50); // 中心坐標為 (250, 100),半徑為 50。
ofDrawEllipse(400, 100, 80, 100); // 中心坐標為 (400, 100),寬度為 80,高度為 100。
ofDrawTriangle(500, 150, 550, 50, 600, 150); // 三個頂點坐標分別為 (500, 150), (550, 50), (600, 150)。
ofDrawLine(700, 50, 700, 150); // 從 (700, 50) 到 (700, 150) 的直線。

???? 運行結果如下:

C++之openFrameworks框架怎么使用

下面再試試 ofFill() 和 ofNoFill() 函數:

  • ofFill() 函數用于設置形狀的填充顏色,使繪制的形狀被填充。

  • ofNoFill() 函數用于設置形狀的無填充狀態,只繪制輪廓線,不填充顏色。

ofBackground(0);
ofSetColor(255);
ofFill();
ofDrawRectangle(50, 50, 100, 100);
ofDrawCircle(250, 100, 50);
ofDrawEllipse(400, 100, 80, 100);
ofDrawTriangle(500, 150, 550, 50, 600, 150);
ofDrawLine(700, 50, 700, 150);
ofNoFill();
ofDrawRectangle(50, 200, 100, 100);
ofDrawCircle(250, 250, 50);
ofDrawEllipse(400, 250, 80, 100);
ofDrawTriangle(500, 300, 550, 200, 600, 300);
ofDrawLine(700, 200, 700, 300);

???? 運行結果如下:

C++之openFrameworks框架怎么使用

使用基本形狀來創建一個小項目,具有以下目標。

  • 目標:通過按下鼠標左鍵并移動,用畫筆創建一個隨機散布的 "爆炸狀" 效果。

C++之openFrameworks框架怎么使用

// 如果左鼠標按鈕被按下...
if (ofGetMousePressed(OF_MOUSE_BUTTON_LEFT)) {  
    ofSetColor(255);
    ofSetRectMode(OF_RECTMODE_CENTER);
    ofDrawRectangle(
        ofGetMouseX(), 
        ofGetMouseY(), 
        50, 
        50
    );  
    // 在鼠標位置繪制一個寬高為50的矩形,居中對齊
}

C++之openFrameworks框架怎么使用

單矩形畫刷:使用鼠標(2) 

// 我們仍然希望在黑色背景上進行繪制,因此在進行畫刷操作之前需要先繪制背景
ofSetBackgroundAuto(false); 
ofBackground(0); // 設置背景顏色為黑色

C++之openFrameworks框架怎么使用

修改 draw() 函數,隨機指定出現的矩形的顏色:

if (ofGetMousePressed(OF_MOUSE_BUTTON_LEFT)) { // 如果左鼠標按鈕被按下...
  float randomColor = ofRandom(50, 255); // 隨機生成顏色值,范圍從50到255
  ofSetColor(randomColor); // 設置矩形的顏色為隨機生成的顏色值,排除黑色背景上不可見的灰度值(0 - 50)
  ofSetRectMode(OF_RECTMODE_CENTER); 
  ofDrawRectangle(ofGetMouseX(), ofGetMouseY(), 50, 50); // 在鼠標位置繪制一個寬高為50的矩形,居中對齊
}

C++之openFrameworks框架怎么使用

ofRandom() 用于生成指定范圍內的隨機數。它接受兩個參數,表示生成隨機數的范圍,可以是整數或浮點數。例如,ofRandom(0, 255) 會生成一個0到255之間的隨機整數。

ofSetColor() 接受一個或多個參數,用于指定顏色的RGBA值(紅、綠、藍和透明度)。常見的用法是傳入三個整數參數來設置RGB顏色值,例如 ofSetColor(255, 0, 0) 表示設置顏色為紅色。

這兩個函數通常在繪圖時一起使用,例如在繪制圖形之前先生成隨機顏色,然后使用 ofSetColor() 設置繪制的圖形顏色,從而實現隨機顏色的效果。

if (ofGetMousePressed(OF_MOUSE_BUTTON_LEFT)) { // If the left mouse button is pressed...
ofSetRectMode(OF_RECTMODE_CENTER);
int numRects = 10;
for (int r=0; r<numRects; r++) {
ofSetColor(ofRandom(50, 255));
float width = ofRandom(5, 20);
float height = ofRandom(5, 20);
float xOffset = ofRandom(-40, 40);
float yOffset = ofRandom(-40, 40);
ofDrawRectangle(ofGetMouseX()+xOffset, ofGetMouseY()+yOffset, width, height);
}
}

發光圓形筆刷:使用顏色

了解如何更改顏色:

ofColor myOrange(255, 132, 0); // Defining an opaque orange color - specified using RGB
ofColor myBlue(0, 0, 255, 50); // Defining a transparent blue color - specified using RGBA
// We can access the red, green, blue and alpha channels like this:
ofColor myGreen(0, 0, 255, 255);
cout << "Red channel:" << myGreen.r << endl;
cout << "Green channel:" << myGreen.g << endl;
cout << "Blue channel:" << myGreen.b << endl;
cout << "Alpha channel:" << myGreen.a << endl;
// We can also set the red, green, blue and alpha channels like this:
ofColor myYellow;
myYellow.r = 255; myYellow.b = 0; myYellow.g = 255; myYellow.a = 255;
// We can also make use of some predefined colors provided by openFrameworks:
ofColor myAqua = ofColor::aqua;
ofColor myPurple = ofColor::plum;

???? 運行結果如下:

C++之openFrameworks框架怎么使用

Fleeing 三角形筆刷:Vector

ofVec2f mousePos(ofGetMouseX(), ofGetMouseY());
// Define a triangle at the origin (0,0) that points to the right
ofVec2f p1(0, 25.0);
ofVec2f p2(100, 0);
ofVec2f p3(0, -25.0);
// Shift the triangle to the mouse position
p1 += mousePos;
p2 += mousePos;
p3 += mousePos;

Fleeing 三角形筆刷:Vectors 和旋轉

C++之openFrameworks框架怎么使用

0x04 使用 projectGenerator 創建項目

在 of_v0.11.2_vs2017_release\projectGenerator 路徑下,雙擊:

C++之openFrameworks框架怎么使用

C++之openFrameworks框架怎么使用

然后定義 Project name 項目名稱,路徑可以不做修改,如果需要,可以在 Addons 中可以添加插件。最后點擊 Generate 按鈕,即可生成。

C++之openFrameworks框架怎么使用

此時點擊 Open in IDE 即可,IDE 就會彈出:

C++之openFrameworks框架怎么使用

以上就是關于“C++之openFrameworks框架怎么使用”這篇文章的內容,相信大家都有了一定的了解,希望小編分享的內容對大家有幫助,若想了解更多相關的知識內容,請關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

c++
AI

金堂县| 西藏| 哈尔滨市| 竹山县| 天镇县| 江川县| 那曲县| 唐山市| 房山区| 西和县| 西华县| 衡水市| 峨山| 怀来县| 东阳市| 酒泉市| 留坝县| 资阳市| 绥宁县| 宁乡县| 金阳县| 元朗区| 固阳县| 方正县| 九江市| 申扎县| 库伦旗| 祁东县| 日喀则市| 大足县| 汉中市| 勐海县| 澄江县| 天全县| 博乐市| 江西省| 彭泽县| 自治县| 措勤县| 延庆县| 澄迈县|