OpenGL中繪制圖形元素的實現(使用visual studio(C++)繪制一個矩形)

目標:使用OpenGL提供的函數繪制矩形、線段、三角形等基本圖形元素

所需效果

實驗步驟

1、配置OpenGL(詳情參見OpenGL的配置)
2、頭文件引入
#include <gl/glut.h>
3、編寫方法體
1>矩形實現
//繪制矩形
void DisplayRectangle(void)
{glClear(GL_COLOR_BUFFER_BIT);   //刷新顏色緩沖區;glColor3f(0.0f, 0.0f, 230.0f);  //繪圖顏色(藍色)glRectf(50.0f, 50.0f, 150.0f, 100.0f);  //繪制矩形,只要設定矩形左下角點坐標(50,50)和右上角點坐標(150,100)即可glFlush();   //用于刷新命令隊列和緩沖區,使所有尚未被執行的OpenGL命令得到執行;
}
2>直線實現
//繪制直線
void DisplayLine(void)
{glClear(GL_COLOR_BUFFER_BIT);   //刷新顏色緩沖區;glColor3f(1.0f, 0.0f, 0.0f);  //繪圖顏色(紅色)glBegin(GL_LINES);  //使用glBegin,slEnd和繪制直線的常量GL_LINESglVertex2f(50, 50);  //點坐標glVertex2f(100, 100);  //點坐標glEnd();glFlush();   //用于刷新命令隊列和緩沖區,使所有尚未被執行的OpenGL命令得到執行;
}
3>三角形實現
//繪制三角形
void DisplayTrainguler(void)
{glClear(GL_COLOR_BUFFER_BIT);   //刷新顏色緩沖區;glColor3f(0.0f, 1.0f, 0.0f);  //繪圖顏色(綠色)glBegin(GL_TRIANGLES);  //使用glBegin,slEnd和繪制直線的常量GL_TRIANGLESglVertex2f(50, 50);  //點坐標glVertex2f(100, 100);  //點坐標glVertex2f(150, 50);  //點坐標glEnd();glFlush();   //用于刷新命令隊列和緩沖區,使所有尚未被執行的OpenGL命令得到執行;
}
3、書寫主函數
int main(int argc, char* argv[])
{glutInit(&argc, argv);    //初始化GLUT庫;glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);   //設置顯示模式;(緩沖,顏色類型)glutInitWindowSize(600, 500); //繪圖窗口大小glutInitWindowPosition(100, 120); //窗口左上角在屏幕的位置glutCreateWindow("圖形繪制");  //創建窗口,標題為“圖形繪制”;Initial();glutDisplayFunc(DisplayTrainguler);   //調用繪圖函數三角形//glutDisplayFunc(DisplayLine);   //調用繪圖函數直線//glutDisplayFunc(DisplayRectangle);   //調用繪圖函數矩形glutMainLoop();   //表示開始運行程序,用于程序的結尾;return 0;
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/72352.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/72352.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/72352.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

庖丁解java(一篇文章學java)

(大家不用收藏這篇文章,因為這篇文章會經常更新,也就是刪除后重發) 一篇文章學java,這是我滴一個執念... 當然,真一篇文章就寫完java基礎,java架構,java業務實現,java業務擴展,根本不可能.所以,這篇文章,就是一個索引,索什么呢? 請看下文... 關于決定開始寫博文的介紹 …

面試高頻#LeetCode#Hot100-字母異位詞分組

題號鏈接 49. 字母異位詞分組 - 力扣&#xff08;LeetCode&#xff09; 1首先定義map集合一個String對應一個String[]集合&#xff0c;遍歷字符串數組 2對其先進行拆分&#xff0c;拆分為字符數組&#xff0c;再進行排序&#xff0c;再轉為字符串 3如果key值沒有就創建一個字符…

esProc SPL vs DuckDB:多源數據處理誰更勝一籌?

DuckDB 和 esProc SPL 都支持多樣數據源處理&#xff0c;這里比較一下兩者的差異。 支持的數據源種類 DuckDB 支持的數據源類型覆蓋了常見的文件格式&#xff08;如 CSV、Parquet、JSON、Excel&#xff09;、云存儲&#xff08;如 AWS S3、Azure Blob Storage&#xff09;以及…

超精密工件小孔幾何尺寸測量:自動化解決方案

下載鏈接&#xff1a;&#xff08;最新版本&#xff09;超精密工件小孔幾何尺寸測量&#xff1a;自動化解決方案python腳本代碼&#xff0c;可直接運行&#xff0c;內包含測試數據&#xff0c;親測好用資源-CSDN文庫 在現代制造業中&#xff0c;超精密工件的質量控制至關重要&a…

重生之我在學Vue--第11天 Vue 3 高級特性

重生之我在學Vue–第11天 Vue 3 高級特性 文章目錄 重生之我在學Vue--第11天 Vue 3 高級特性前言一、Teleport&#xff1a;打破組件層級的瞬移術1. 什么是Teleport&#xff1f;2. 核心用法3. 實戰技巧 二、Suspense&#xff1a;異步組件的優雅過渡1. 為什么需要Suspense&#x…

MCU的工作原理:嵌入式系統的控制核心

MCU的工作原理可以概括為以下幾個步驟&#xff1a; 1. 初始化 上電后&#xff0c;MCU從Flash存儲器中加載程序代碼&#xff0c;并初始化外設和寄存器。 2. 任務執行 根據程序邏輯&#xff0c;MCU執行數據處理、外設控制和通信等任務。通過中斷系統實時響應外部事件。 3. 低…

游戲引擎學習第158天

回顧和今天的計劃 我們在這里會實時編碼一個完整的游戲&#xff0c;沒有使用引擎或庫&#xff0c;一切都由我們自己做所有的編程工作&#xff0c;游戲中的每一部分&#xff0c;無論需要做什么&#xff0c;我們都親自實現&#xff0c;并展示如何完成這些任務。今天&#xff0c;…

k8s基礎架構介紹

k8s基礎架構介紹 k8s 是對容器進行編排的一種工具。通過k8s可以實現對容器的編排、部署、更新等 學習k8s之前&#xff0c;先了解相關的一些使用和配置k8s的一些工具。 k8s的常用工具 在 kubernetes 中&#xff0c;主要有三個日常使用的工具&#xff0c;這些工具使用 kube 前…

興達易控Profinet 轉 ModbusTCP跨網段通信模塊

Profinet 轉 ModbusTCP/跨網段通信模塊 Profinet轉ModbusTCP/跨網段通信模塊&#xff0c;作為現代工業自動化系統中不可或缺的重要組件&#xff0c;正日益受到廣泛關注和應用。 這種模塊的核心功能是將Profinet網絡協議轉換為Modbus TCP協議&#xff0c;實現不同網絡之間的無縫…

創新技術引領軟件供應鏈安全,助力數字中國建設

編者按 隨著數字化轉型的加速&#xff0c;針對軟件供應鏈的攻擊事件呈快速增長態勢&#xff0c;目前已成為網絡空間安全的焦點。如何將安全嵌入到軟件開發到運營的全流程&#xff0c;實現防護技術的自動化、一體化、智能化&#xff0c;成為技術領域追逐的熱點。 懸鏡安全作為…

某大廠自動化工程師面試題

一些大廠的自動化工程師面試題匯總: 基礎知識類 請解釋什么是PLC(可編程邏輯控制器)?什么是PID控制?它在自動化系統中的作用是什么?請描述一下工業4.0的基本概念。編程與控制系統類 你熟悉哪些PLC編程語言?請舉例說明。如何在SCADA系統中實現數據采集和監控?請解釋一下…

Java 大視界 -- 基于 Java 的大數據分布式數據庫架構設計與實踐(125)

&#x1f496;親愛的朋友們&#xff0c;熱烈歡迎來到 青云交的博客&#xff01;能與諸位在此相逢&#xff0c;我倍感榮幸。在這飛速更迭的時代&#xff0c;我們都渴望一方心靈凈土&#xff0c;而 我的博客 正是這樣溫暖的所在。這里為你呈上趣味與實用兼具的知識&#xff0c;也…

cursor中使用prettier-code formatter插件方法

cursor的"擴展"中搜索"prettier-code formatter"&#xff0c;然后安裝 點擊cursor編輯器右上角“更多操作”&#xff0c;然后打開“配置編輯器” 按照圖片進行操作&#xff0c;進入到editor在editor中&#xff0c;找“格式化“&#xff0c;把Format On Sav…

OSPF-2 鄰接建立關系

上一期我們說了OSPF的鄰居建立關系以及OSPF鄰居關系建立中建立失敗的因素以及相關實驗案例 這一期我們來說說OSPF的鄰接關系建立時需要交互哪些報文以及失敗因素及原因和相關實驗案例 一、概述 在運行了OSPF的網絡當中為了交互鏈路狀態信息和路由信息,互相之間需要建立鄰接關…

問deepseek: 如何處理CGNS網格文件里,多個zone之間的鏈接數據

在CGNS文件中&#xff0c;多個zone之間的鏈接數據通常通過ZoneGridConnectivity節點處理。以下是處理步驟&#xff1a; 1. 確定鏈接類型 首先&#xff0c;明確zone之間的鏈接類型&#xff0c;常見的有&#xff1a; 1-to-1連接&#xff1a;兩個zone的邊界點一一對應。** Over…

什么是SEO泛目(什么是SEO站群)

SEO泛目錄與站群策略&#xff1a;提升網站優化的雙劍合璧 在當今競爭激烈的互聯網環境中&#xff0c;SEO優化已成為企業提升網站流量和品牌曝光的重要手段。而在眾多SEO策略中&#xff0c;泛目錄和站群因其獨特的技術優勢和效果&#xff0c;逐漸成為SEO從業者的熱門選擇。本文…

conda、pip、npm、yarn換國內源

conda源 # conda源 conda config --add channels https://mirrors.ustc.edu.cn/anaconda/pkgs/main/ conda config --set show_channel_urls yes# 換回conda的默認源 conda config --remove-key channels pip源 # pip源# 永久換源 pip config set global.index-url https://…

Jetson Orin NX jupyter lab的安裝和使用

主要是為了梳理一下整個過程&#xff0c;其實步驟很簡單&#xff0c;但容易出錯。 注意&#xff0c;實際只有兩個文件需要寫入&#xff0c;一個是jupyter_lab_config.py&#xff0c;一個是jupyter.service。 配置文件的名字要寫對&#xff0c;如果總是copy網上的代碼&#xff0…

【清華大學第七版】DeepSeek賦能家庭教育的實操案例(批改作文+輔助語文/數學/科學學習+制定學習計劃)

我用夸克網盤分享了「DeepSeek完整資料合集」&#xff0c;點擊鏈接即可保存。打開「夸克APP」&#xff0c;無需下載在線播放視頻&#xff0c;暢享原畫5倍速&#xff0c;支持電視投屏。 鏈接&#xff1a;https://pan.quark.cn/s/621259e4af15 近日&#xff0c;清華大學發布了《…

hive 中的各種參數,一般在哪里修改

在實際工作中&#xff0c;Hive 參數的配置和修改可以通過多種方式進行&#xff0c;具體取決于使用場景和需求。以下是常見的參數配置方式和適用場景&#xff1a; 1. 在 Hive CLI 或 Beeline 中臨時設置 適用場景: 臨時修改參數&#xff0c;僅對當前會話生效。 使用方法: 在 Hi…