[問題] 請問如何用OpenGL顯示動畫?
平台是Windows XP sp3
用VC 8 (VS2005)
想做很傻的事,用OpenCV去load 資料 ,然後叫 OpenGL繪圖:
int width = 0;
int height = 0;
char *imageData=NULL;
void Resize(int x, int y)
{
glViewport(0, 0, x, y);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(0.0, 1.0, 0.0, 1.0, 0.0, 1.0);
}/*Resize*/
void Display(void)
{
/* Clear the window to black */
glClearColor(0.0, 0.0, 0.0, 1.0);
glClear(GL_COLOR_BUFFER_BIT);
if (NULL != imageData) glDrawPixels(width, height, GL_BGR_EXT,
imageData);
glFinish();
}/*Redraw*/
int RenderImage(void)
{
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
glutInitWindowSize(width , height);
glutCreateWindow("Viewer");
glutDisplayFunc(Display);
glutReshapeFunc(Resize);
/*inverse image*/
glRasterPos2i(-1.0, 1.0);
glPixelZoom(1.0f, -1.0f);
glutMainLoop();
return 1;
}/*RenderImage*/
int main(void)
{
char *inputname = "testImage.bmp";
IplImage *Image = cvLoadImage(inputname,-1);
width = Image->width;
height = Image->height;
imageData = Image->imageData;
RenderImage();
return 1;
}/*main*/
上面的代碼,對顯示一張是沒問題的。
現在問題是在於 ,外面會一直用OpenCV加載不同的數據,
然後餵給openGL顯示為動畫。
既main改為:
for(int i = 0;i< n;i++){
char inputname[256] ;
sprintf(inputname,"%s%d%s","testImage",i,".bmp");
IplImage *Image = cvLoadImage(inputname,-1);
width = Image->width;
height = Image->height;
imageData = Image->imageData;
RenderImage();
}/*for i*/
這樣做只會顯示第一張就定住不動。
那請問該如何做修改才會變成動畫呢,謝謝。
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 59.120.158.204
※ 編輯: Risingforce 來自: 59.120.158.204 (07/30 14:33)
推
07/30 15:22, , 1F
07/30 15:22, 1F
推
07/30 15:29, , 2F
07/30 15:29, 2F
→
07/30 15:30, , 3F
07/30 15:30, 3F
→
07/30 15:31, , 4F
07/30 15:31, 4F
→
07/30 15:32, , 5F
07/30 15:32, 5F
→
07/30 15:54, , 6F
07/30 15:54, 6F
※ 編輯: Risingforce 來自: 59.120.158.204 (07/30 16:02)
推
07/30 16:04, , 7F
07/30 16:04, 7F
推
07/30 20:29, , 8F
07/30 20:29, 8F
→
07/30 20:30, , 9F
07/30 20:30, 9F