X-Git-Url: http://git.treefish.org/~alex/phys/latlib.git/blobdiff_plain/3a8bc55b2fdece524393351af7996d743931c5b3..0e276c2770688b3cc7676ee84c8e35246621f6df:/cubelooks.cpp?ds=inline diff --git a/cubelooks.cpp b/cubelooks.cpp new file mode 100644 index 0000000..ca675bd --- /dev/null +++ b/cubelooks.cpp @@ -0,0 +1,115 @@ +#include "cubelooks.h" +#include +#include +#include + +using namespace std; + +/* GLOBAL */ +vector< pair > Envs; + +int cubelooks::cube::allid = 0; + +void cubelooks::cube::draw() +{ + glBegin(GL_QUADS); + glVertex2f(-1, -1); glVertex2f(1, -1); glVertex2f(1, 1); glVertex2f(-1, 1); + glEnd(); +} + +namespace mygl +{ + cubelooks::env* getEnv() + { + for (int ienv=0; ienvcubes.size(); icube++) { + glScalef(1.0/Env->layout[0],1.0/Env->layout[1],1.0); + //glRotatef(2, 1, 0, 0); + Env->cubes.at(icube).draw(); + } + + glutSwapBuffers(); + } + + static void* glutThread(void *_Env) + { + int winsize[2]; + + cubelooks::env* Env = (cubelooks::env*)_Env; + + glutInit( ((cubelooks::env*)Env)->argc, ((cubelooks::env*)Env)->argv ); + glutInitDisplayMode(GLUT_DOUBLE|GLUT_RGB|GLUT_DEPTH); + + if( Env->layout[0] >= Env->layout[1] ) { + winsize[0] = 640; + winsize[1] = (640.0/Env->layout[0])*Env->layout[1]; + } + else { + winsize[1] = 640; + winsize[0] = (640.0/Env->layout[1])*Env->layout[0]; + } + + glutInitWindowSize(winsize[0], winsize[1]); + + glutInitWindowPosition(0,0); + + glutCreateWindow("cubelooks"); + + glutDisplayFunc(&displayFunc); + glutReshapeFunc(&reshapeFunc); + //glutIdleFunc(&idleFunc); + + Envs.push_back( pair(pthread_self(), (cubelooks::env*)Env) ); + + glutMainLoop(); + } +}; + +cubelooks::cube::cube() +{ + id = allid; + allid++; +} + +cubelooks::cubelooks(const int& xcubes, const int& ycubes, int *argc, char **argv) +{ + Env.argc = argc; + Env.argv = argv; + Env.layout[0] = xcubes; + Env.layout[1] = ycubes; + for (int icube=0; icube