Похоже, что размер изображения не 256 на 256, а около 150 пикселей в ширину.Ваша текстура должна иметь степень 2 больших, но если вам нужно загрузить меньшую текстуру, вы можете использовать glTexSubImage2D :
glTexSubImage2D(GL_TEXTURE_2D, /* target */
0, /* level */
0, /* xoffset */
0, /* yoffset */
150, /* width */
256, /* height */
GL_RGBA, /* format */
GL_UNSIGNED_BYTE, /* type */
this->pBuffer); /* data */
В начальном вызове glTexImage2D просто передайте NULL вместопиксельного буфера.Попробуйте что-то вроде этого, посмотрите, имеет ли это значение.
Если вы используете glDrawTexiOES для рисования текстуры, то для обрезки меньшей текстуры используйте GL_TEXTURE_CROP_RECT_OES:
int rect[4] = {0, imageHeight, imageWidth, -imageHeight};
glTexParameteriv(GL_TEXTURE_2D, GL_TEXTURE_CROP_RECT_OES, rect);
glDrawTexiOES(0, 0, 0, windowWidth, windowHeight);