日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【OpenGL】九、OpenGL 绘制基础 ( OpenGL 状态机概念 | OpenGL 矩阵概念 )

發布時間:2025/6/17 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【OpenGL】九、OpenGL 绘制基础 ( OpenGL 状态机概念 | OpenGL 矩阵概念 ) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • 一、OpenGL 狀態機概念
  • 二、OpenGL 矩陣概念



上一篇博客 【OpenGL】八、初始化 OpenGL 渲染環境 ( 導入 OpenGL 頭文件 | 鏈接 OpenGL 庫 | 將窗口設置為 OpenGL 窗口 | 設置像素格式描述符 | 渲染繪制 ) ★ 進行了 OpenGL 渲染環境初始化 ;

本篇博客簡單介紹 OpenGL 中的一些理論概念 ;





一、OpenGL 狀態機概念



OpenGL 是一個狀態機 , 其中包含了很多狀態 , 簡單列舉下面的幾項 :

OpenGL 中的 矩陣 Matrix , 包含了 投影 ( Projection ) 矩陣 , 模型 ( Model View ) 矩陣 ,

當前的顏色 Color ,

當前的清除緩沖區顏色 ClearColor ,

點的大小 PointSize ,

線寬度 LineWidth ,

光照 Light

?\ \ \ \ \ \ \vdots???????


當使用 OpenGL 繪制 3D 圖形時 , 就會讀取當前的狀態機參數 , 利用這些狀態機進行繪制 , 而我們就在繪制之前設置上述一系列的狀態機 , 確保 OpenGL 繪制按照我們設想的進行 ;


在上一篇博客 【OpenGL】八、初始化 OpenGL 渲染環境 ( 導入 OpenGL 頭文件 | 鏈接 OpenGL 庫 | 將窗口設置為 OpenGL 窗口 | 設置像素格式描述符 | 渲染繪制 ) ★ 中Windows 窗口創建完成后 , 初始化 OpenGL 渲染環境 , 調用 wglCreateContext 方法創建了 OpenGL 上下文對象 HGLRC rc 后 , 此時上述的 狀態機都是默認的 , 進行相關繪制前 , 都需要 逐個設置相關狀態機的值 ; 初始化狀態機操作如下 :

設置清除緩沖區顏色 :

// 設置清除緩沖區背景顏色// glClearColor (GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha)// 對應的參數是 紅色 , 綠色 , 藍色 , 透明度// 這里設置的是紅色glClearColor(1.0, 0.0, 0.0, 1.0);

初始化矩陣 :

// 矩陣環境初始化 , 主要是投影矩陣和模型矩陣 // ( 選中投影矩陣 ) 設置矩陣模式 , 告知 GPU 當前要操作的矩陣是投影矩陣glMatrixMode(GL_PROJECTION);// ( 給投影矩陣設置值 ) 向投影矩陣設置參數gluPerspective(50.0f, 800.0f / 600.0f, 0.1f, 1000.0f);// ( 選中模型矩陣 )glMatrixMode(GL_MODELVIEW);glLoadIdentity();

當前顏色值設置 : 繪制元素前 , 將當前的顏色值設為一個值 , 如 白色 , 開始繪制后 , 就會自動使用該顏色進行繪制 ;

稍后會使用 OpenGL 在桌面窗口中繪制一個點 , 繪制前將當前顏色設置為白色 , 然后繪制的點的顏色就是白色 ;

如果想要繪制不同顏色的點 , 就需要在每次繪制前 , 都修改當前顏色值 ;

整個 OpenGL 只有一個當前顏色值 ;





二、OpenGL 矩陣概念



OpenGL 中的 矩陣 Matrix , 包含了 投影 ( Projection ) 矩陣 , 模型 ( Model View ) 矩陣 ,

繪制的 點 定義在 世界坐標系 下 , 是一個三維的點 , 該三維的點需要將其顯示到二維屏幕上 ;

模型視口 ( ModelView ) 矩陣 的作用就是將上述 世界坐標系中的三維坐標點 , 放到 視口中 , 視口坐標系是攝像機下的可見范圍 ;


攝像機位置 :

右手坐標系 : x 指向屏幕右側 , y 指向屏幕上方 , z 穿過屏幕指向你 ;

攝像機默認放在上述 右手坐標系 原點 , 指向 z 的負方向 , 即看屏幕里面的方向 ;


因此繪制的時候 , 如果使攝像機在默認位置時 , 需要將要繪制的模型放在 z 的負方向上 , 如下代碼是繪制坐標點的代碼 :

// 設置繪制點的位置glVertex3f(0.0f, 0.0f, -0.5f);

其繪制位置是 右手坐標系的 屏幕后面 -0.5f 的位置 , 這樣正好暴露在攝像機下 ;


投影 ( Projection ) 矩陣 的作用是將 視口 中的模型 , 投影到二維屏幕 ( 顯示器 ) 上 ;

總結

以上是生活随笔為你收集整理的【OpenGL】九、OpenGL 绘制基础 ( OpenGL 状态机概念 | OpenGL 矩阵概念 )的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。