var canvas = document.getelementbyid("mycanvas");
// 獲取上下文並初始化畫布
var gl = canvas.getcontext("webgl");
// 定義清除顏色
gl.clearcolor(0.0, 0.0, 0.0, 1.0);
// 通過color_buffer_bit把顏色清除為gl.clearcolor()定義的顏色
gl.clear(gl.color_buffer_bit);
// 著色器原始碼
var vertexsource = `
// 宣告乙個屬性變數 a
attribute vec3 a;
void main()
`;var fragmentsource = `
// 精度限定符, 最小精度為float
precision mediump float;
void main()
`;// 建立定點和片段著色器
var vertexshader = gl.createshader(gl.vertex_shader);
var fragmentshader = gl.createshader(gl.fragment_shader);
// 將著色器原始碼附加到著色器上
gl.shadersource(vertexshader, vertexsource);
gl.shadersource(fragmentshader, fragmentsource);
// 編譯著色器
gl.compileshader(vertexshader);
gl.compileshader(fragmentshader);
// 建立乙個程式物件
var program = gl.createprogram();
// 將編譯好的著色器附加到程式物件上
gl.attachshader(program,vertexshader);
gl.attachshader(program,fragmentshader);
// 鏈結程式物件
gl.linkprogram(program);
// webgl引擎使用該程式物件
gl.useprogram(program);
// 建立乙個webglbuffer緩衝物件
var vertexbuffer = gl.createbuffer();
// 將該緩衝物件繫結為當前的陣列緩衝
gl.bindbuffer(gl.array_buffer, vertexbuffer);
// 緩衝資料
var data = [
0.0 , 0.5 , 0.0,
-0.5 , -0.5 , 0.0,
0.5 , -0.5 , 0.0
];// 將緩衝資料新增到當前的陣列緩衝中
gl.bufferdata(gl.array_buffer, new float32array(data), gl.static_draw);
// 獲取著色器原始碼中屬性的引用
var vertexattriblocation = gl.getattriblocation(program, "a");
// 設定屬性a接收gl.array_buffer的資料
gl.vertexattribpointer(vertexattriblocation, 3, gl.float, false, 0, 0);
// 設定通過頂點著色器將緩衝的輸入資料轉換為一系列頂點陣列
gl.enablevertexattribarray(vertexattriblocation);
// 繪製緩衝陣列
gl.drawarrays(gl.********s, 0, 3);
乙個簡單的makefile示例及其注釋
因為專案開發需要,要學會寫makefile,遂搗之,在網上看到一篇很不錯的makefile的入門文章,轉來和大家分享 相信在unix下程式設計的沒有不知道makefile的,剛開始學習unix平台 下的東西,了解了下makefile的製作,覺得有點東西可以記錄下。下面是乙個極其簡單的例子 現在我要編...
乙個簡單的makefile示例及其注釋
相信在unix下程式設計的沒有不知道makefile的,剛開始學習unix平台 下的東西,了解了下makefile的製作,覺得有點東西可以記錄下。下面是乙個極其簡單的例子 現在我要編譯乙個hello world,需要如下三個檔案 1.print.h include void printhello 2...
乙個簡單的makefile示例及其注釋
相信在unix下程式設計的沒有不知道makefile的,剛開始學習unix平台 下的東西,了解了下makefile的製作,覺得有點東西可以記錄下。下面是乙個極其簡單的例子 現在我要編譯乙個hello world,需要如下三個檔案 1.print.h include void printhello 2...