opengl學習筆記3 2 在3D中畫線

2021-06-18 14:24:56 字數 1784 閱讀 5731

本節學習畫線。

繪製線的方式和繪製點的方式類似,本節主要看**。

#include "gl/freeglut.h"

#include #define gl_pi 3.1416f

void renderscene(void)

glend();

glpopmatrix();

//!!!!

//!!! 設定線段的寬

// glfloat y;

// glfloat fsizes[2];

// glfloat fcurrsize;

// glgetfloatv(gl_line_width_range, fsizes);

// fcurrsize = fsizes[0];

//獲得點大小的範圍,以及受支援的點的大小增量

// // //

// glpushmatrix();

// glrotatef(gl_pi*3, 1.0f, 0.0f, 0.0f);

// // glrotatef(gl_pi*3, 0.0f, 1.0f, 0.0f);

// // for (y = -90.0f; y < 90.0f; y+=20.0f)

//

//!!!

//!!! 設定線段為點畫,設定點畫的方式

// glfloat y;

// glint factor = 1;

// glushort pattern = 0x5555;

// // glloadidentity();

// // glenable(gl_line_stipple);

// // for (y = -90.0f; y < 100.0f; y += 20.0f)

//

//!!!

glpopmatrix();

glutswapbuffers();

}void setuprc(void)

void changesize(glsizei w, glsizei h)

glviewport(0, 0, w, h);

//reset coordinate system

glmatrixmode(gl_projection);

glloadidentity();

//build clipping region(left, right, bottom, top, near, far)

glfloat aspectratio = (glfloat)w/h;

glfloat nrange = 100.0f;

if (w <= h)

else

glmatrixmode(gl_modelview);

glloadidentity();

}int main(int argc, char* argv)

偷懶把第三章全部**一次放上去了,方便檢視。

可以分別注釋和開啟renderscene函式中的**段,**執行效果,了解在畫直線過程的函式的作用。

這裡解釋一下gllinestipple(glint factor, glushort pattern)函式:

pattern引數是乙個16位的值,它指定了乙個模式,供繪直線所用。它的每個位表示線段的一部分或者出於開啟狀態,或者出於關閉狀態。在預設情況下,每個位對應乙個畫素,但factor引數可以作為乘法因子增加模式的寬度。如把factor設為5,則pattern的每一位代表5個畫素。另外,模式的第0位(最低有效位)首先被用於指定直線。

3D基礎 3D座標變換在OpenGL 中的實踐

在計算機圖形學中,變換矩陣是非常基礎也是非常重要的知識,在許多資料中,只是羅列出一堆矩陣公式,圖表等等,這很難給人感性的認識,特別是初學者,筆者結合 opengl 這樣乙個非常流行的圖形庫,以實踐的方式闡述在 3d變換矩陣中最簡單的三種 平移 縮放以及旋轉。這裡有一些前提知識,就是需要了解線性代數一...

OpenGL實現3D自由變形

筆者介紹 姜雪偉,it公司技術合夥人,it高階講師,csdn社群專家,特邀編輯,暢銷書作者,已出版書籍 手把手教你架構3d遊戲引擎 電子工業出版社和 unity3d實戰核心技術詳解 電子工業出版社等。以前有朋友問我,關於變形動畫是如何實現的,實現方式主要有兩種,一種是通過美術人員利用max工具自己調...

3d在除錯區輸出座標 3D人體姿態估計筆記

英文版 3d human pose estimation notes 人體姿態估計 估計人的關節點座標 回歸問題 多人姿態估計 人體姿態跟蹤 先獲取2d資訊,然後再 提公升 到3d姿態 直接用預訓練好的2d姿態網路,將得到的2d座標輸入到3d姿態估計網路中 得益於2d姿態估計較為成熟 缺點 為什麼要...