#include "pattern.h" #include #include #include #include #include #include #include "texturesdl.h" Pattern::Pattern(std::string filename) { patt_width = 25.0; patt_center[0] = 0.0; patt_center[1] = 0.0; patt_id = arLoadPatt(filename.c_str()); } void Pattern::update(ARMarkerInfo* marker_info, int marker_num) { for(int j = 0; j < marker_num; j++) { if( patt_id == marker_info[j].id ) { arGetTransMat(&marker_info[j], patt_center, patt_width, patt_trans_kake); draw(); //else if( marker_info[k].cf < marker_info[j].cf ) k = j; } } } SpritePattern::SpritePattern(Texture* _tex) : Pattern("patterns/hiro.patt") { tex = _tex; } void SpritePattern::draw() { double gl_para[16]; patt_trans_kake[0][0] = patt_trans_kake[1][1] = -1; patt_trans_kake[2][2] = 1; patt_trans_kake[0][1] = patt_trans_kake[0][2] = 0; patt_trans_kake[1][0] = patt_trans_kake[1][2] = 0; patt_trans_kake[2][0] = patt_trans_kake[2][1] = 0; arglCameraView(patt_trans_kake, gl_para, 1.0); glMatrixMode(GL_MODELVIEW); glLoadMatrixd(gl_para); //glTranslatef(0.0, -8.0, 0.0); glBindTexture(GL_TEXTURE_2D, tex->tex()); glBegin(GL_QUADS); glTexCoord2f(0, 1); glVertex3f(-30, -30, 0); glTexCoord2f(0, 0); glVertex3f(-30, 30, 0); glTexCoord2f(1, 0); glVertex3f(30, 30, 0); glTexCoord2f(1, 1); glVertex3f(30, -30, 0); glEnd(); } KakePattern::KakePattern() : SpritePattern(new TextureSDL("foo.png")) { }