opengl如何讀取並使用兩張紋理
1、讀取一張紋理
virtual unsigned loadtexture(const char* filename)
/*** 產生乙個紋理id,可以認為是紋理控制代碼,後面的操作將書用這個紋理id
gl_apicall void gl_apientry glgentextures (glsizei n, gluint* textures)
n:用來生成紋理的數量;textures:儲存紋理索引的第乙個元素指標
*/glgentextures(1, &textureid);
/*** 使用這個紋理id,或者叫繫結(關聯)
將紋理索引繫結到目標紋理
*/glbindtexture(gl_texture_2d, textureid);
/*** 指定紋理的放大,縮小濾波,使用線性方式,即當放大的時候插值方式
*/gltexparameteri(gl_texture_2d, gl_texture_mag_filter, gl_linear);
gltexparameteri(gl_texture_2d, gl_texture_min_filter, gl_linear);
/*** 將的rgb資料上傳給opengl.
*/glteximage2d(
gl_texture_2d, //! 指定是二維
0, //! 指定為第一級別,紋理可以做mipmap,即lod,離近的就採用級別大的,遠則使用較小的紋理
gl_rgba, //! 紋理的使用的儲存格式
width, //! 寬度,老一點的顯示卡,不支援不規則的紋理,即寬度和高度不是2^n。
height, //! 寬度,老一點的顯示卡,不支援不規則的紋理,即寬度和高度不是2^n。
0, //! 是否有邊框
gl_rgba, //! 資料的格式,bmp中,windows,作業系統中儲存的資料是bgr格式
gl_unsigned_byte, //! 資料是8bit資料
pixels
);/**
* 釋放記憶體
*/freeimage_unload(dib);
return textureid;
}
2、使用它
virtual void render()
; //清空緩衝區
glclear(gl_depth_buffer_bit | gl_color_buffer_bit);
//視口,在windows視窗指定的位置和大小上繪製opengl內容
glviewport(0, 0, _width, _height);
//建立乙個投影矩陣
cell::matrix4 screenproj = cell::ortho(0, float(_width), 0, float(_height), -100.0f, 100);
_shader.begin();
;cell::matrix4 matmvp = screenproj;
uvanima +=0.01f;
glactivetexture(gl_texture0);//啟用0號紋理單元
glbindtexture(gl_texture_2d, _textureid);//繫結textureid,到目標紋理,將textureid設定為當前紋理單元的操作紋理
glactivetexture(gl_texture1);//啟用1號紋理單元
glbindtexture(gl_texture_2d, _textureid1);//繫結textureid1,到目標紋理
gluniform1i(_shader._textureid, 0);//傳遞0進去,
//shader的texture2d(_textureid,_outuv);呼叫0號紋理單元的紋理
gluniform1i(_shader._textureid1, 1);
gluniformmatrix4fv(_shader._mvp, 1, false, matmvp.data());
gluniform1f(_shader._uvanima, uvanima);
glvertexattribpointer(_shader._position, 2, gl_float, false, sizeof(vertex), vertex);
glvertexattribpointer(_shader._uv, 2, gl_float, false, sizeof(vertex), &vertex[0].uv);
glvertexattribpointer(_shader._color, 4, gl_unsigned_byte, true, sizeof(vertex), &vertex[0].color);
gldrawarrays(gl_********_strip, 0, 4);
}_shader.end();
}
SQL兩張表如何關聯
比如 我有table1 和 table2 兩張表table1 id name 1 張三 男 2 李四 女 3 王五 男table2 比如 我有table1 和 table2 兩張表 table1 id name 1 張三 男 2 李四 女 3 王五 男 table2 id hobby lid 1 下...
SQLSERVER中如何快速比較兩張表的不一樣
一般來說,如何檢測兩張表的內容是否一致,體現在複製 的時候發布端和訂閱端的兩端的資料上面 我這裡羅列了一些如何從資料庫層面來解決此類問題的方法 第一步當然就是檢查記錄數 是否一致,否則不用想其他方法了 這裡我們用兩張表t1 old,t1 new 來演示方法介紹 方法一 老老實實看表結構和表記錄數,弊...
SQLSERVER中如何快速比較兩張表的不一樣
不知不覺要寫2014年的最後一篇博文了 一般來說,如何檢測兩張表的內容是否一致,體現在複製的時候發布端和訂閱端的兩端的資料上面 我這裡羅列了一些如何從資料庫層面來解決此類問題的方法 第一步當然就是檢查記錄數是否一致,否則不用想其他方法了 這裡我們用兩張表t1 old,t1 new來演示 方法介紹 方...