Это можно сделать, все, что вам нужно сделать, это получить следующую мощность на 2 больше, чем не POT.
Затем сгенерируйте кадровый буфер:
GLuint aFramebuffer;
glGenFramebuffersOES(1, &aFramebuffer);
И текстура:
GLuint aTexturebuffer;
glGenTextures(1, &aTexturebuffer);
Затем вы делаете ту же текстуру, что и вещи:
glBindTexture(GL_TEXTURE_2D, aTexturebuffer);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
glColor4ub(0, 0, 0, 255);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, textureWidth, textureHeight, 0, GL_RGBA, GL_UNSIGNED_BYTE, NULL);
int area[] = {0.0, 0.0, renderWidth, renderHeight};
glTexParameteriv(GL_TEXTURE_2D, GL_TEXTURE_CROP_RECT_OES, area);
glBindFramebufferOES(GL_FRAMEBUFFER_OES, aFramebuffer);
glFramebufferTexture2DOES(GL_FRAMEBUFFER_OES, GL_COLOR_ATTACHMENT0_OES, GL_TEXTURE_2D, aTexturebuffer, 0);
Здесь я использовал расширение draw_texture.
textureWidth
и textureHeight
- это степень 2, а renderWidth
и renderHeight
- ширина и высота рендера.
Затем, когда вы привязываетесь к aFramebuffer
, он обращается к текстуре.