OpenGL 模板測試

2021-07-02 01:30:13 字數 1987 閱讀 8051

1,模板實現裁剪例項

#include "gltools.h"

#include

#else

#define freeglut_static

#include

#endif

#define yellowmat 1

#define bluemat 2

void init (void)

; glfloat yellow_specular = ;

glfloat blue_diffuse = ;

glfloat blue_specular = ;

glfloat position_one = ;

glnewlist(yellowmat, gl_compile);

glmaterialfv(gl_front, gl_diffuse, yellow_diffuse);

glmaterialfv(gl_front, gl_specular, yellow_specular);

glmaterialf(gl_front, gl_shininess, 64.0);

glendlist();

glnewlist(bluemat, gl_compile);

glmaterialfv(gl_front, gl_diffuse, blue_diffuse);

glmaterialfv(gl_front, gl_specular, blue_specular);

glmaterialf(gl_front, gl_shininess, 45.0);

glendlist();

gllightfv(gl_light0, gl_position, position_one);

glenable(gl_light0);

glenable(gl_lighting);

glenable(gl_depth_test);

glclearstencil(0x0);//設定以 0 來重置模板緩衝區的值

glenable(gl_stencil_test);//啟用模板測試

2,平面鏡反射例項

#include "gltools.h"

#include

#else

#define freeglut_static

#include

#endif

void drawsphere()

, ambient = ;

gllightfv(gl_light0, gl_position, pos);

gllightfv(gl_light0, gl_ambient, ambient);

}// 繪製乙個球體

OpenGL(十四) 模板測試

啟用模板測試時,opengl會在記憶體中開闢一塊空間作為模板緩衝區,裡邊儲存了每個畫素的 模板值 模板測試的過程就是把每乙個畫素的模板值與乙個設定的模板參考值進行比較,符合設定條件的通過測試,不符合條件的則不會繪製。glclearstencil函式用來指定模板值復位後的初始值,跟使用glclearc...

OpenGL模板測試通俗理解

看書籍或資料往往還是雲裡霧裡的,這裡寫一下自己的理解。希望對需要的人有幫助。簡而言之 模板緩衝區和幀緩衝區一樣大 模板緩衝區初始狀態是什麼?在glclearbuffer的時候清空,所以初始狀態是全為0。模板測試什麼時候進行?每一次你呼叫繪製函式的時候都會進行模板測試。一次繪製後,畫素著色器會輸出畫素...

OpenGL(14) 模板測試

啟用模板測試時,opengl會在記憶體中開闢一塊空間作為模板緩衝區,裡邊儲存了每個畫素的 模板值 模板測試的過程就是把每乙個畫素的模板值與乙個設定的模板參考值進行比較,符合設定條件的通過測試,不符合條件的則不會繪製。glclearstencil函式用來指定模板值復位後的初始值,跟使用glclearc...