本節學習畫線。
繪製線的方式和繪製點的方式類似,本節主要看**。
#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姿態估計較為成熟 缺點 為什麼要...