想象一下源图像的大小为1024x1024像素,纹理的大小为512x512。现在,我需要获取部分源图片并将其上传到纹理。
要这样做,我就这样使用glPixelStorei
:
glPixelStorei(GL_UNPACK_ROW_LENGTH, 1024);
glPixelStorei(GL_UNPACK_IMAGE_HEIGHT, 1024 );
glPixelStorei(GL_UNPACK_SKIP_ROWS, 0 );
glPixelStorei(GL_UNPACK_SKIP_PIXELS, 0 );
glTexSubImage2D ( GL_TEXTURE_2D, mipmap,
0,
0,
512,
512,
dataFormat,
dataType
dataPtr );
虽然GL_UNPACK_SKIP_PIXELS +纹理大小小于或等于源大小,但一切看起来都很清楚。
但是,如果GL_UNPACK_SKIP_PIXELS例如为768,那么源数据将不覆盖请求的数据区域(768 + 512> 1024),将会发生什么?会是未定义的行为还是其他?是否记录在某处?据我所知,OpenGL驱动程序没有产生任何错误。