2015-08-09 48 views
0

我正在使用opengl中的一個工具。 我在多邊形中填充了bmp圖像文件中的多邊形。 我可以旋轉攝像頭查看來自不同地方的圖​​像,我想複製圖像的一部分並將其放入新的bmp文件中。 我有很多不必要的代碼,所以我會複製imprtant部分。如何將部分紋理複製到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(); 

and the rotation is very basic,soo someone have any suggestions? 非常感謝。

回答

0

如果要將OpenGL的輸出保存到文件中,您必須從GL中讀回顏色緩衝區的內容到客戶端內存。然後,你可以做你想做的事。命令

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

將在xy到位於data存儲器緩衝器開始width * height像素的矩形讀回的像素數據。既然你說過要把它保存爲BMP文件,你可能需要GL_UNSIGNED_BYTE作爲類型,因爲BMP每個通道只支持8位。您還可能需要GL_BGAGL_BGR作爲格式,因爲這是BMP的本機通道佈局。

+0

感謝foe快速回答。但是以什麼格式保存數據?它是char **還是什麼?對於我的知識感到遺憾,但對於這個問題我真的很陌生。 – ransar

+0

恩。如果你想把它保存爲BMP,你可能應該使用某種圖像庫。 Windows本身也應該能夠生成BMP文件。基本上,你需要一個掛載到你的'LoadBitmap'函數。 – derhass