openGL學習筆記二十三 更新紋理及區域性更新

2021-10-05 06:07:42 字數 2337 閱讀 7346

如果原來紋理id對應的視訊記憶體有資料,則刪掉,並在視訊記憶體中重新建立紋理。如果沒有,直接建立紋理

void  glteximage2d (glenum target, glint level, glint internalformat, glsizei width, glsizei height, glint border, glenum format, glenum type, const void *pixels);
區域性更新原來的紋理視訊記憶體。

void gltexsubimage2d (glenum target, glint level, glint xoffset, glint yoffset, glsizei width, glsizei height, glenum format, glenum type, const void *pixels);
如下圖把黑色區域中一部分更新成紅色

建立更新

//頂點資料

struct vertex

;//紋理id

gluint _texture;

static fibitmap*

readimage

(const

char

* filename)

//2 載入

fibitmap *dib =

freeimage_load

(fifmt, filename,0)

; free_image_color_type type =

freeimage_getcolortype

(dib)

;//! 獲取資料指標

fibitmap* temp = dib;

dib =

freeimage_convertto32bits

(dib)

;freeimage_unload

(temp)

; byte* pixels =

(byte*

)freeimage_getbits

(dib)

;int width =

freeimage_getwidth

(dib)

;int height =

freeimage_getheight

(dib)

;for

(int i =

0; i < width * height *

4; i+=4

)return dib;

}static

void

oninit()

}

渲染

// 繪製

static

void

render

(glfwwindow * window),,

,,};

glmatrixmode

(gl_modelview)

;glbindtexture

(gl_texture_2d, _texture)

;glenable

(gl_depth_test)

;glenable

(gl_texture_2d)

;glenableclientstate

(gl_vertex_array)

;glenableclientstate

(gl_texture_coord_array)

;glvertexpointer(3

, gl_float,

sizeof

(vertex)

,&cubevertices[0]

.x);

gltexcoordpointer(2

, gl_float,

sizeof

(vertex)

,&cubevertices[0]

.u);

// 清成單位矩陣

glloadidentity()

;// 產生乙個矩陣

python 學習筆記(二十三)

coding utf8 author liwei import re python正則的應用,math方法判斷正則是否匹配成功 print 正則簡單用例 text hello liwei is 25 if re.match r w s w s w s d text print ok else pri...

php學習筆記(二十三)建立cookie

關於cookie有一點很重要,它必須在傳送其他任何資訊之前從伺服器傳送到客戶端,也就是說,指令碼應該在print語句之前,或者引入任何包含html的外部檔案之前傳送cookie,如果伺服器嘗試在web瀏覽器已經獲得了html 之後發生cookie,甚至空格,都會產生錯誤資訊,cookie傳送也將失敗...

c語言學習筆記二十三

指標 佔4個位元組的儲存空間 概念把乙個變數所在的記憶體單元儲存在另乙個記憶體單元中,儲存單元的這個位址就是指標 示例 int i int pi i 指標的重新賦值 pi j 改變指標所指向的整型變數的值 pi pi 10 指標初始化另乙個指標 兩指標必須為同一型別 int ptri ptri pi...