2015-08-09 4 views
0

Im работает над porject в opengl. У меня многоугольник в многоугольнике, заполненном файлом изображения BMP. Я могу повернуть камеру, чтобы посмотреть изображение из разных мест, и я хочу скопировать часть изображения и поместить его в новый файл BMP. У меня есть много ненужного кода, поэтому я скопирую частица.Как скопировать часть текстуры в изображение в opengl

_textureId = LoadBMP("file.bmp"); 


glEnable(GL_TEXTURE_2D); 
glBindTexture(GL_TEXTURE_2D, _textureId); 
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); 
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); 
glColor3f(1, 1, 0.7); 
float BOX_SIZE = -12.0f; 
glBegin(GL_QUADS); 
glVertex3f(-BOX_SIZE/2, -BOX_SIZE/2, -5); 
glVertex3f(BOX_SIZE/2, -BOX_SIZE/2, -5); 
glVertex3f(BOX_SIZE/2, -BOX_SIZE/2, 5); 
glVertex3f(-BOX_SIZE/2, -BOX_SIZE/2, 5); 


glEnd(); 

и поворот довольно простой, у кого-то есть предложения? спасибо большое.

ответ

0

Если вы хотите сохранить вывод OpenGL в файл, вам нужно будет прочитать содержимое цветового буфера из GL в клиентскую память. Затем вы можете сделать то, что хотите. Команда

glReadPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid *data)

будут считаны данные пикселя в прямоугольник из width * height пикселей, начиная со x, y в буфер памяти, расположенной на data. Поскольку вы сказали, что хотите сохранить его в виде BMP-файла, вам, вероятно, понадобится GL_UNSIGNED_BYTE как тип, потому что BMP поддерживает только до 8 бит на канал. Вы также хотите, вероятно, GL_BGA или GL_BGR в качестве формата, так как это собственный формат канала для BMP.

+0

благодарит врага за быстрый ответ. но в каком формате я сохраняю данные? это char ** или что? сожалею о моих знаниях, но я действительно новичок в этом вопросе. – ransar

+0

Ну. Если вы хотите сохранить его как BMP, вы, вероятно, должны использовать какую-то библиотеку изображений. Windows сама также должна иметь возможность создавать файлы BMP. В принципе, вам понадобится подвеска для вашей функции LoadBitmap. – derhass