これはなぜでしょうか?どうやらfor(int y=0 ; y < V.size()-1 ; y++){などで止まっているらしいのですが。
ご指導お願いいたします。
IplImage *I;//入力画像
GLuint tex; //入力画像のテクスチャID
void display();
//2次元頂点クラス//
class v2d{
public:
float x, y ;
v2d() : x(0), y(0) {}
v2d(float a, float b ) : x(a), y(b){}
void glVertex() {glVertex2f(x,y);}
void glTexCoord(){ glTexCoord2f(x/ float(I->width),y/float(I->height)); }
};
//メッシュのメモリ確保と作成
#define GS 20
vector<vector<v2d>> V , R;
void createMesh(){
for(int y=0;y<I->height + GS-1 ;y+=GS){
V.resize(V.size()+1);
for(int x = 0; x<I->width+GS-1; x+=GS) {V.back().push_back(v2d(x,y));}
cout << V.back().size() << endl;
}
R=V;
}
int main(int argc, char *argv[]){
//画像表示
I= cvLoadImage("lena-std.tif",1);
cvNamedWindow("画像表示");//ウィンドウ作成
cvShowImage("画像表示",I);//画像表示
cvWaitKey(0);//待機
if((I=cvLoadImage("lena-std.tif",-1))==0) abort();
cvCvtColor(I,I,CV_BGR2RGB);
//OpenGLの初期設定
glutInit(&argc,argv);//glutの初期化
glutInitDisplayMode(GLUT_SINGLE|GLUT_RGBA);
glutInitWindowPosition(0,0);
glutInitWindowSize(I->width,I->height);
glutCreateWindow("インタラクティブな画像表現");
glutDisplayFunc(display);
glutMouseFunc(mouse);
gluOrtho2D(0,I->width,I->height,0);
glEnable(GL_TEXTURE_2D);
glGenTextures(1,&tex);
glBindTexture(GL_TEXTURE_2D,tex);
gluBuild2DMipmaps(GL_TEXTURE_2D,GL_RGB,I->width,I->height,GL_RGB,GL_UNSIGNED_BYTE,I->imageData);
createMesh();
glutMainLoop();
return 0;
}
/////メッシュを描くdisplay関数//////
void display(){
glClearColor(1,1,1,1);
glClear(GL_COLOR_BUFFER_BIT);
//メッシュを描写
glEnable(GL_TEXTURE_2D);
glColor3f(1,1,1);
for(int y=0 ; y < V.size()-1 ; y++){
glBegin(GL_QUAD_STRIP);
for(int x=0 ; x<V[y].size();x++){
V[y+1][x].glTexCoord();R[y+1][x].glVertex();
V[y ][x].glTexCoord();R[y ][x].glVertex();
}
glEnd();
}
//メッシュのグリッド線を描画
glDisable(GL_TEXTURE_2D);
glColor3f(1,0,0);
glBegin(GL_LINES);
for(int y=0;y<V.size()-1;y++){
for(int x=0;x<V[y].size();x++){
R[y][x].glVertex();R[y ][x+1].glVertex();
R[y][x].glVertex();R[y+1][x ].glVertex();
}
}
glEnd();
glFlush();
}