2016-12-30 48 views
2

當使用OpenGL的glTexSubImage2D和glTexSubImage3D函數,並且子圖像不等於紋理的實際尺寸時,數據指針是否應包含打包的數據以匹配實際紋理尺寸或子圖像的尺寸?例如,如果您有一個簡單的3x3紋理,並且您只想上傳中心像素,那將會是一個具有x偏移1,y偏移1,寬度1和高度1的子圖像,並且您會呼...OpenGL glTexSubImage數據包裝

glTexSubImage2D(GL_TEXTURE_2D, 0, 1, 1, 1, 1, GL_RED, GL_UNSIGNED_BYTE, data)

應該data看起來像{ 255 }或類似{ 0, 0, 0, 0, 255, 0, 0, 0, 0 }

回答

3

紋理的大小並不重要。

分區域的大小更新呢。具體而言,glTexSubImage2D(target, level, xoffset, yoffset, width, height, format, type, data)預計data指向適當類型和格式的大小爲(width, height)的矩形圖像。數據從內存中解壓的方式由GL_UNPACK_ALIGNMENTGL_UNPACK_ROW_LENGTH和朋友管理。請參閱OpenGL specification §8.4 Pixel Rectangles

在您的特殊情況下,data必須指向一個值,如{ 255 }