OpenGL紋理
阿新 • • 發佈:2018-12-22
void glGenTexture(GLsizei n, GLuint ids);*
建立n個紋理id
void glBindTexture(GLenum target, GLuint id);
把指定紋理物件與當前啟用的紋理單元以target的形式進行繫結
target為 GL_TEXTURE_1D、GL_TEXTURE_2D、GL_TEXTURE_3D。。。
例如要把當前的GL_TEXTURE_1D設為1號紋理,則:
glBindTexture(GL_TEXTURE_1D, 1);
注意:一個紋理物件可以繫結到多個紋理單元,也就是說同樣的紋理資料可以使用不同的取樣器取樣。
void glActiveTexture(GLenum texture);
選擇當前啟用的紋理單元
texture為GL_TEXTURE0,GL_TEXTURE1,GL_TEXTURE2。。。
void glDeleteTexture(GLsizei n, const GLuint textures);*
刪除紋理物件,紋理id可以被重新使用
接下來將紋理資料放入視訊記憶體,有兩種方法
- glTexStorage() + glTexSubImage()************不可改變的儲存
void glTexStorage1D(GLenum target, GLsizei levels, GLenum internalFormat, GLsizei width);
先設定紋理在視訊記憶體中的儲存格式 internalFormat(內部格式)
void glTexSubImage1D(GLenm target,GLint levels,GLint xoffset,GLsizei width,
GLenum format,
GLenum type,
const void
然後用data中的資料去替換紋理儲存位置的某一個區域
這裡的format和type(外部格式)是data的格式,改格式是根據讀進來的資料決定的
2.glTexImage()************可改變的紋理分配函式(縮放、格式變化等)
void glTexImage1D( GLenum target, GLint levels, GLint internalFormat, GLsizei width,
GLsizei border,
GLenum format,
GLenum type,
const void data);
注意:內部格式是紋理在視訊記憶體中的格式,由我們自己指定;外部格式是資料本身的格式(記憶體中的格式),由資料決定。
此外,還可以使用PixelUnpack快取讀入資料
或者從幀快取中拷貝資料